Php 调用未定义的方法Laravel\Socialite\One\TwitterProvider::stateless()

Php 调用未定义的方法Laravel\Socialite\One\TwitterProvider::stateless(),php,laravel,twitter-oauth,laravel-5.2,laravel-socialite,Php,Laravel,Twitter Oauth,Laravel 5.2,Laravel Socialite,我收到以下错误: Call to undefined method Laravel\Socialite\One\TwitterProvider::stateless() 引发此错误的行是: $userData = Socialite::driver($provider)->stateless()->user(); 上面的操作对于Facebook登录非常有效 有什么想法吗?快速查看一下,TwitterProvider使用的AbstractProvider与FacebookProvi

我收到以下错误:

Call to undefined method Laravel\Socialite\One\TwitterProvider::stateless()
引发此错误的行是:

$userData = Socialite::driver($provider)->stateless()->user();
上面的操作对于Facebook登录非常有效


有什么想法吗?

快速查看一下,TwitterProvider使用的
AbstractProvider
FacebookProvider
不同

TwitterProvider
AbstractProvider
未实现
无状态()


所以我想我要说的是…无状态oAuth是不可能的,因为Laravel Socialite软件包中的TwitterProvider是现成的。

TwitterProvider需要secret带有令牌,您可以使用此方法

userFromTokenAndSecret

范例

$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);

在loginController的handleProviderCallback函数中,替换:

$userSocial = Socialite::driver($social)->stateless()->user();
与:

使用:

"laravel/socialite": "^3.0"

在您的composer.json require部分中。

您无法使用
无状态
从Twitter获取用户信息,因为在我撰写本文时,Twitter不支持
OAuth 2.0
。 但是,我发现了一个使用API登录的变通方法

然而,实现这一点的一种方法是使用

return Socialite::driver('twitter')->redirect();
Socialite::driver($provider)->user();
在回调中,使用以下命令获取返回的信息

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以提高安全性。
我希望你了解这个概念

这是行不通的。由于一个是无状态的,另一个是有状态的。@Bdwey@Husam您从哪里获得$token,这与.env文件中的TWITTER_CLIENT_ID相同吗?@kp123用户在iOS、Android或任何其他平台上成功登录TWITTER后,TWITTER将使用token进行响应。将此令牌发送到后端,并使用此代码获取和验证用户info@Husam谢谢,但我很困惑..我们不是要让用户登录吗?@Husam例如,我有
$redirectUrl=Socialite::driver($service)->无状态()->user()->redirect()我首先尝试获取重定向URL…但是显然无状态()不起作用,所以我正在尝试找到一种方法来实现这一点work@kp123只有在开发API以验证成功的用户登录请求时,我们才使用“无状态”。如果你想登录网站,我建议你使用无状态。