[英]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.