调用未定义的方法 Laravel\Socialite\One\TwitterProvider::stateless()
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
。
此 AbstractProvider
用于 TwitterProvider
未实现 stateless()
。
所以我想我想说的是...开箱即用的 Laravel Socialite 包中的 TwitterProvider 无法实现无状态 oAuth。
TwitterProvider 需要 secret 和 token 你可以使用这个方法
userFromTokenAndSecret
示例
$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
在您的 loginController 中,在 handleProviderCallback 函数中替换:
$userSocial = Socialite::driver($social)->stateless()->user();
与:
$userSocial = Socialite::driver($social)->user();
使用:
"laravel/socialite": "^3.0"
在您的 composer.json 要求部分。
您无法使用 stateless
从 Twitter 获取用户信息,因为在我撰写本文时 Twitter 不支持 OAuth 2.0
。 Link to twitter dev forum
但是,我找到了使用 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 以获得更高的安全性。
我希望你明白这个概念。
我收到以下错误:
Call to undefined method Laravel\Socialite\One\TwitterProvider::stateless()
抛出此错误的行是:
$userData = Socialite::driver($provider)->stateless()->user();
以上内容适用于 Facebook 登录。
有什么想法吗?
快速浏览显示 TwitterProvider
使用与 FacebookProvider
不同的 AbstractProvider
。
此 AbstractProvider
用于 TwitterProvider
未实现 stateless()
。
所以我想我想说的是...开箱即用的 Laravel Socialite 包中的 TwitterProvider 无法实现无状态 oAuth。
TwitterProvider 需要 secret 和 token 你可以使用这个方法
userFromTokenAndSecret
示例
$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
在您的 loginController 中,在 handleProviderCallback 函数中替换:
$userSocial = Socialite::driver($social)->stateless()->user();
与:
$userSocial = Socialite::driver($social)->user();
使用:
"laravel/socialite": "^3.0"
在您的 composer.json 要求部分。
您无法使用 stateless
从 Twitter 获取用户信息,因为在我撰写本文时 Twitter 不支持 OAuth 2.0
。 Link to twitter dev forum
但是,我找到了使用 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 以获得更高的安全性。 我希望你明白这个概念。