編輯:
我只是找到了解決辦法:
新auth_type=rerequest
參數添加到redirect()
,這樣做你的控制器中創建用戶可以在其中下降許可後重定向的方法,然後設置方法with()
到再請求參數附加到URL像這樣:
public function redirect(Socialite $socialite)
{
return $socialite->driver('facebook')->with(['auth_type' => 'rerequest'])->redirect();
}
作爲Socialite的另一個解決方法暫時不提供ReRequest,因此在這種情況下,您在收到用戶拒絕電子郵件的Socialite用戶響應後,從用戶Facebook帳戶取消授權您的應用權限,然後從登錄頁面提醒用戶他必須授予您使用Facebook繼續登錄到您的應用程序的權限,所以下次用戶單擊登錄按鈕時,他會再次看到一個Facebook對話框,他可以在其中給予所有權限。
/**@var \Laravel\Socialite\Two\User $retrieveUser*/
$retrieveUser = $social->driver($provider)->user();
$client = new \GuzzleHttp\Client;
$response = $client->delete("https://graph.facebook.com/{$retrieveUser->id}/permissions",
[
'headers' => [
'Accept' => 'application/json',
],
'form_params' => [
'access_token' => $retrieveUser->token
]
]
);
因爲這種解決方法不遵守Facebook的最佳做法,我也建議你使用哪個有這個選項開箱https://github.com/SammyK/LaravelFacebookSdk
偶然的巧合,我現在面臨同樣的問題,我找不到任何方法來發送尚未使用Laravel社會名流一個再請求,比如我決定創建手動另一個類處理這種情況時,我沒有收到來自用戶的電子郵件,我嘗試的另一個解決方法是,當用戶拒絕了電子郵件我手動發送另一個刪除調用圖形Api從用戶設置撤銷應用程序,這將不會登錄用戶在我的應用程序和下一次用戶點擊登錄按鈕時,他會再次提示分享他的電子郵件地址。 –