![](/img/trans.png)
[英]Call to undefined method Laravel\Socialite\Facades\Socialite::isDeferred()
[英]Call to undefined method Laravel\Socialite\One\TwitterProvider::stateless()
我收到以下错误:
Call to undefined method Laravel\Socialite\One\TwitterProvider::stateless()
抛出此错误的行是:
$userData = Socialite::driver($provider)->stateless()->user();
以上适用于Facebook登录。
有任何想法吗?
快速浏览显示TwitterProvider
使用与FacebookProvider
不同的AbstractProvider
。
TwitterProvider
这个AbstractProvider
没有实现stateless()
。
所以我想我所说的是......无状态的oAuth是开箱即用的Laravel Socialite包中的TwitterProvider无法实现的。
TwitterProvider需要使用令牌的秘密 ,您可以使用此方法
userFromTokenAndSecret
例
$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
你不能使用stateless
从Twitter获取用户信息,因为Twitter不支持OAuth 2.0
,因为我写这篇文章。 链接到twitter dev论坛但是,我找到了一个使用API登录的解决方法。
但是,执行此操作的一种方法是使用此方法重定向
return Socialite::driver('twitter')->redirect();
在回调中,使用此获取返回的信息
Socialite::driver($provider)->user();
从此处获取令牌和其他信息,然后,执行您的操作并将凭据存储在数据库中并获取新的数据库行ID并加密该值并使用该加密值重定向到您的登录页面。 从您的登录页面,执行一些操作并检查是否存在这样的id,如果是,则尝试登录。现在在loginController
,执行类似这样的操作
$authId = $request->get('authId');
$authId = decrypt($authId);
$social = SocialAuth::find($authId);
$user = User::find($social->user_id);
然后尝试使用id登录该用户。 使用更多参数重定向到登录URL,以提高安全性。 我希望你能得到这个概念。
在你的loginController中,在handleProviderCallback函数中替换:
$userSocial = Socialite::driver($social)->stateless()->user();
有:
$userSocial = Socialite::driver($social)->user();
使用:
"laravel/socialite": "^3.0"
在您的composer.json需要部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.