Laravel 5.1 - 社交名流 - 获取用户
Laravel 5.1 - Socialite - Fetching User
使用官方 Laravel Docs 5.1 - Socialite,我设置了我的路由并编辑了我的 AuthController。
public function redirectToProvider()
{
return Socialite::driver('facebook')
->scopes(['public_profile', 'email'])->redirect();
}
它完美地工作并且 returns
http://domain.dev/auth/facebook/callback?code=AQDLFlYr...
然后我使用了 Laracasts' Socialite - Laravel 5.0,我试着把我的变成一个合适的 Facebook 身份验证。我做了一切,直到(min.12.11,特别是在视频中)。 (在 12.11,他在 15 秒内重述了内容)。这就是我想要做的。
现在,当我将 AuthController
更改为:
public function redirectToProvider(AuthenticateUser $authenticateUser, Request $request)
{
return $authenticateUser->execute($request->has('code'));
}
...让我的 AuthenticateUser class
像这样:
use Illuminate\Contracts\Auth\Guard; (PS. I changed Authenticator to Guard)
class AuthenticateUser {
private $users;
private $socialite;
private $auth;
public function __construct(UserRepository $users, Socialite $socialite, Guard $auth)
{
$this->users = $users;
$this->socialite = $socialite;
$this->auth = $auth;
}
public function execute($hasCode)
{
// dd($hasCode) *First dd
if ( ! $hasCode) return $this->getAuthorizationFirst();
$user = $this->socialite->driver('facebook')->user();
// dd($hasCode) *Second dd
// dd($user) *Third dd
}
private function getAuthorizationFirst()
{
return $this->socialite->driver('facebook')
->scopes(['public_profile', 'email'])->redirect();
}
}
*UserRepository is currently empty.
当我使用 *First dd
时,我在屏幕上收到 False
。
当我使用 *Second dd
时,我收到 True
。
当我使用 *Third dd
时,我什么也没收到。
在所有这些情况下,现在,我收到 http://domain.dev/auth/facebook?code=9329409329042
。
编辑:
我添加了 return
,现在 link 包括 ?code=9390249032...
,但是当我使用 *Third dd
- dd($user)
时,仍然没有返回
我终于走到了这里:
public function execute($hasCode)
{
dd($hasCode); // returns FALSE now
if ( ! $hasCode) return $this->getAuthorizationFirst();
dd($hasCode); // returns TRUE now
$user = $this->socialite->driver('facebook')->user();
dd($user); // BUT STILL RETURNS NOTHING
}
.. 和 link 包括 ?code=9943290...
基本上,$user = $this->socialite->driver('facebook')->user();
不是 working/converting 的部分,因为 dd($user) 没有返回任何东西..
看来您可能忘记了 return。
return $authenticateUser->execute($request->has('code'));
使用官方 Laravel Docs 5.1 - Socialite,我设置了我的路由并编辑了我的 AuthController。
public function redirectToProvider()
{
return Socialite::driver('facebook')
->scopes(['public_profile', 'email'])->redirect();
}
它完美地工作并且 returns
http://domain.dev/auth/facebook/callback?code=AQDLFlYr...
然后我使用了 Laracasts' Socialite - Laravel 5.0,我试着把我的变成一个合适的 Facebook 身份验证。我做了一切,直到(min.12.11,特别是在视频中)。 (在 12.11,他在 15 秒内重述了内容)。这就是我想要做的。
现在,当我将 AuthController
更改为:
public function redirectToProvider(AuthenticateUser $authenticateUser, Request $request)
{
return $authenticateUser->execute($request->has('code'));
}
...让我的 AuthenticateUser class
像这样:
use Illuminate\Contracts\Auth\Guard; (PS. I changed Authenticator to Guard)
class AuthenticateUser {
private $users;
private $socialite;
private $auth;
public function __construct(UserRepository $users, Socialite $socialite, Guard $auth)
{
$this->users = $users;
$this->socialite = $socialite;
$this->auth = $auth;
}
public function execute($hasCode)
{
// dd($hasCode) *First dd
if ( ! $hasCode) return $this->getAuthorizationFirst();
$user = $this->socialite->driver('facebook')->user();
// dd($hasCode) *Second dd
// dd($user) *Third dd
}
private function getAuthorizationFirst()
{
return $this->socialite->driver('facebook')
->scopes(['public_profile', 'email'])->redirect();
}
}
*UserRepository is currently empty.
当我使用 *First dd
时,我在屏幕上收到 False
。
当我使用 *Second dd
时,我收到 True
。
当我使用 *Third dd
时,我什么也没收到。
在所有这些情况下,现在,我收到 http://domain.dev/auth/facebook?code=9329409329042
。
编辑:
我添加了
return
,现在 link 包括?code=9390249032...
,但是当我使用*Third dd
-dd($user)
时,仍然没有返回我终于走到了这里:
public function execute($hasCode) { dd($hasCode); // returns FALSE now if ( ! $hasCode) return $this->getAuthorizationFirst(); dd($hasCode); // returns TRUE now $user = $this->socialite->driver('facebook')->user(); dd($user); // BUT STILL RETURNS NOTHING }
.. 和 link 包括 ?code=9943290...
基本上,
$user = $this->socialite->driver('facebook')->user();
不是 working/converting 的部分,因为 dd($user) 没有返回任何东西..
看来您可能忘记了 return。
return $authenticateUser->execute($request->has('code'));