2020年4月之後,上架App Store得應用如果含有三方登入如google、微信、github等必須整合apple賬號得登入,否則無法通過稽核!
誰讓小胳膊擰不過大腿呢。我們要上線還是的整合.
首先介紹下,本文章主要介紹純API整合Apple登入。而且使用了socialite整合的三方登入,qq、微信已經整合對接完成。如果有需要的可以給我留言。我有時間可以把相關也貼出來。
還是很感謝socialite 非常適宜的增加了apple登入。前幾天看還沒有今天一重新整理居然已經整合了。非常的高興可以節省大量時間完成功能。不用重複造輪子。
一. socialite 介紹
首先貼一下socialite整合類目地址 方便大家找到使用:
socialiteproviders.netlify.app/pro...1.
composer require socialiteproviders/apple
2.
config\app.php 的 \SocialiteProviders\Manager\ServiceProvider::class到中的providers[]
'providers' => [
// a whole bunch of providers
// remove 'Laravel\Socialite\SocialiteServiceProvider',
\SocialiteProviders\Manager\ServiceProvider::class, // add
];
3.
事件監聽器
將SocialiteProviders\Manager\SocialiteWasCalled事件新增到您的listen[] 陣列中app/Providers/EventServiceProvider。
將您的偵聽器(即來自提供者的偵聽器)新增到SocialiteProviders\Manager\SocialiteWasCalled[]剛建立的偵聽器中。
您為此提供程式新增的偵聽器 為'SocialiteProviders\\Apple\\AppleExtendSocialite@handle',
如:protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
// add your listeners (aka providers) here
'SocialiteProviders\\Apple\\AppleExtendSocialite@handle',
],
];
4.
配置相關 請使用此擴充套件包 socialite-apple-helper
github.com/Ahilmurugesan/socialite...
***其他使用方法請看socialite 不同的我們可以繼續討論
下面說說幾個常見的問題
注:
- 出現返回狀態碼 400 invalid_request 類資訊。通常由於缺少引數,包含不受支援的引數,包含多個憑據或使用多種機制進行客戶端身份驗證而導致請求格式錯誤。
可以重點看一下擴充套件包需要的引數是code 。入引數必須要有 。- 出現狀態嗎400 invalid_client 為客戶端認證失敗。如果code正常傳入對話 請主要看下 APPLE_CLIENT_SECRET 是否已經生成且生成對。
- 出現狀態嗎 400且返回報錯是:invalid_grant 。出現此錯誤基本可以確認是前端傳值錯誤,可以去讓前端在確認下資料。這裡給的排查建議是,前端獲取到值後需要轉string型別傳給後端,這個點需要注意.
- 還有一種錯誤可能是header頭裡面User-Agent ,可以刪除試試 。
$request->headers->remove(‘User-Agent’);
不過官網給到兩種登入方式 大家可以看看 。我這裡主要是基於socialite擴充套件包做的純API文件 。
純API還有一點需要注意 使用擴充套件包在
$driver = Socialite::driver('apple');
//下面這個要開啟不校驗web的一些資料 可以看原始碼 ,因為我們是純api無狀態的開啟方式
Socialite::with('apple')->stateless();
下面就可以獲取到使用者資訊了
$userInfo = $driver->user();
入參:
返回值:
關於返回值中郵箱發現不對 經過檢視文件大概意思是,如果使用者未授權顯示個人真實等資訊,則蘋果介面會返回一個以.appleid.com結尾的郵箱
本作品採用《CC 協議》,轉載必須註明作者和本文連結