Google login – po ověření se nic sestane
- JanBE
- Člen | 62
Ahoj,
řeším přihlašování přes google od Michala – https://github.com/…nette-opauth
zřejmě bude problém s routama, protože fake přihlášení funguje, a gooogle nechá vyplnit údaje, potvrdit soukromí ale pak mi to hodí zpátky na login page bez identity. Při tom v session údaje z gmailu jsou. Nastíním to tady všechno, aby to bylo když tak jasné i někomu později. Aplikaci potřebuji provozovat na doméně v podadresáři /www. Mám ji rozdělenou na front a admin. Bouhužel na hostingu nemůžu použít composer, takže tam mám routy ručněa tím pádem je nepotřebuji definovat v bootsrapu, jako je to u Michala.
config:
extensions:
dibi: Dibi\Bridges\Nette\DibiExtension22
opauth: NetteOpauth\DI\Extension
opauth:
path: '/www/admin/auth/'
debug: true
callback_url: '{path}callback'
security_salt: 'xxxxxxxxxxxxxxxxxxxxx'
callback_transport: 'session'
Strategy:
Facebook:
app_id: ''
app_secret: ''
Google:
client_id: 'xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com'
client_secret: 'xxxxxxxxxx'
Twitter:
key: ''
secret: ''
LinkedIn:
api_key: ''
secret_key: ''
session:
expiration: 14 days
autoStart: yes
savePath: "%tempDir%/sessions"
...
bootstrap:
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Configurator;
$configurator->setDebugMode(true); // enable for your remote IP
$configurator->enableDebugger(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
->addDirectory(__DIR__)
->addDirectory(__DIR__. '/../vendor/michalsvec')
->addDirectory(__DIR__. '/../vendor/opauth')
->register();
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
$container = $configurator->createContainer();
class RouterFactory
{
/**
* @return \Nette\Application\IRouter
*/
public static function createRouter()
{
$router = new RouteList();
//$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
$router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
$router[] = new Route('admin/auth/logout', 'Admin:Auth:logout');
$router[] = new Route('admin/auth/callback', 'Admin:Auth:callback');
$router[] = new Route('admin/auth/<strategy>', 'Admin:Auth:auth');
$router[] = new Route('admin/auth/<strategy>/oauth2callback', 'Admin:Auth:auth');
$router[] = new Route('admin/auth/<strategy>/oauth_callback', 'Admin:Auth:auth');
$router[] = new Route('admin/auth/<strategy>/int_callback', 'Admin:Auth:auth');
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>[/<id>]', 'Default:default');
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');
return $router;
}
}
Sing:in template:
<a href="{plink Auth:google}">přes google</a>
AuthPresenter:
namespace App\AdminModule\Presenters;
use Nette,
Nette\Application\UI\Form,
App\Model, NetteOpauth ;
/**
* Sign in/out presenters.
*/
class AuthPresenter extends \App\Presenters\BasePresenter
{
/** @var NetteOpauth\NetteOpauth */
protected $opauth;
/**
* @param NetteOpauth\NetteOpauth
*/
public function injectOpauth(NetteOpauth\NetteOpauth $opauth)
{
$this->opauth = $opauth;
}
/**
* Redirection method to oauth provider
*
* @param string|NULL $strategy strategy used depends on selected provider - 'fake' for localhost testing
*/
public function actionAuth($strategy = NULL)
{
$this->opauth->auth($strategy);
}
/**
* @param string
*/
public function actionCallback($strategy)
{
if ($strategy === NULL) {
$this->flashMessage("Authentication failed.", "danger");
$this->redirect('Default:default');
}
$identity = $this->opauth->callback($strategy);
// Here is a good place for transformation of 3rd part identities to your app identity.
// Like pairing with your app accounts.
$this->user->login($identity);
$this->redirect("Default:default");
}
/**
* Basic logout action - feel free to use your own in different presenter
*/
public function actionLogout()
{
$this->getUser()->logout(TRUE);
$this->redirect("Default:default");
}
}
NetteOpauth.php: (celé převzato)
Opauth.php: (celé převzato)
Vídíte tam někdo něco špatně?
Google Authorized redirect URIs mám nastaveno na http://www.domena.cz/…uth2callback