Dip*_*ora 8 php facebook laravel laravel-5
我正在尝试使用Socialize在laravel 5中使用facebook登录.
这是我的路线文件代码.
Route::get('fb', function ($facebook = "facebook")
{
$provider = \Socialize::with($facebook);
if (Input::has('code'))
{
$user = $provider->user();
return var_dump($user);
} else {
return $provider->scopes(['public_profile','user_friends'])->redirect();
}
});
Run Code Online (Sandbox Code Playgroud)
登录成功,我得到代码,但get $provider->user()
我得到错误的时间.
AbstractProvider.php第161行中的InvalidStateException
小智 13
http://nhagiaodich.com/dang-nhap
它可以在我的网站上运行,只需在获取用户之前调用 - > stateless()
Socialite::driver('facebook')->stateless()->user()
Socialite::driver('google')->stateless()->user()
Run Code Online (Sandbox Code Playgroud)
Kry*_*ten 12
我只是评论出发出错误的代码(如在@Dipesh Shihora的回答中),我感到很不舒服,所以我再挖一点.我发现错误是由于会话问题引起的(至少在我的情况下).
我的开发服务器是根据本答复中给出的说明设置的.基本上,我通过使用看似公共可访问地址的回调网址"欺骗"Google.
这个InvalidStateException
问题出现了,因为我正在访问我的登录页面http://localhost/login
并重定向到Google的登录页面,然后返回给我http://myapp.example.com/callback
.问题是会话密钥存储在cookie中 - 它最初是一个cookie http://localhost
,但是当我重定向到另一个URL时,cookie(以及会话密钥)无法访问.因此,state
更新后会话值不存在并抛出异常.
解决方案?确保我在开发机器上的所有浏览都是在,http://myapp.example.com
而不是在http://localhost
.
'domain'
尝试在字段config/session.php
和'url'
字段中设置正确的值config/app.php
。这似乎对我有用。我注意到, 中的值session.php
应该是 without http://
,而 中 的值app.php
应该是 with http://
。
另外,我建议您遵循本指南: https: //laracasts.com/series/whats-new-in-laravel-5/episodes/9。这非常有帮助且清晰。
Dip*_*ora -7
我为此找到了临时解决方案。
public function user()
{
//if ($this->hasInvalidState()) {
// throw new InvalidStateException;
//}
$user = $this->mapUserToObject($this->getUserByToken(
$token = $this->getAccessToken($this->getCode())
));
return $user->setToken($token);
}
Run Code Online (Sandbox Code Playgroud)
注释AbstractProvider.php$this->hasInvalidState()
文件中的 if 条件,它工作正常。
归档时间: |
|
查看次数: |
16381 次 |
最近记录: |