Uniapp---蘋果授權登錄【PHP服務端】


在使用Uniapp做蘋果授權登錄,那么服務端的代碼怎么寫呢?下面是PHP服務端的具體寫法:

JAVA可以參考:

https://blog.csdn.net/wpf199402076118/article/details/99677412

蘋果提供了兩種驗證方式,一種是基於 JWT 的算法驗證,另外一種是基於 授權碼 的驗證,這里再提供第三種“取巧”的驗證方式即“不驗證模式”。

不驗證模式

后端只需要接收App端提交的以下參數(user、email 為Apple返回給App的參數名)

user: 授權的用戶唯一標識,該值在同一個開發者賬號下的所有 App 下是一樣的,開發者可以用該唯一標識符與自己后台系統的賬號體系綁定起來

email: 郵箱,只有第一次 授權蘋果才會給 App 返回郵箱信息,之后登錄不再返回

fullName: 用戶信息,只有第一次 授權蘋果才會給 App 返回用戶信息,之后登錄不再返回

開發者只要判斷 數據庫 是否存在 user(授權的用戶唯一標識) 存在就返回登錄成功信息,不存在即在數據庫插入 user、email、fullName等信息(業務邏輯根據具體需求調整)

教程到此結束,后面不用看了

驗證模式

蘋果授權登錄(Sign in with Apple)后端驗證

基於 JWT 的驗證

Sign in with Apple 后端 JWT 驗證文檔:

https://developer.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature

使用指南:

后端只需要接收 App 端提交的以下參數(user、email 為Apple返回給App的參數名)

userID: 授權的用戶唯一標識,該值在同一個開發者賬號下的所有 App 下是一樣的,開發者可以用該唯一標識符與自己后台系統的賬號體系綁定起來

email: 郵箱,只有第一次 授權蘋果才會給 App 返回郵箱信息,之后登錄不再返回

fullName: 用戶信息,只有第一次 授權蘋果才會給 App 返回用戶信息,之后登錄不再返回

authorizationCode: 授權 code(沒用到)

identityToken: 授權用戶的 JWT 憑證

如何驗證:

1、安裝 php-apple-signin 庫

composer require griffinledingham/php-apple-signin

需要php7.2及以上的版本,需要低於這個版本,需要修改源碼,源碼地址:

https://github.com/GriffinLedingham/php-apple-signin

2、驗證JWT

public function jwtApple(Request $request) {
    // 授權的用戶唯一標識
    $user = $request->input('user');
    // 郵箱
    $email = $request->input('email');
    // 用戶信息
    $fullName = $request->input('fullName');
    // 授權code 並沒有用到
    $authorizationCode = $request->input('authorizationCode');
    // 授權用戶的JWT憑證
    $identityToken = $request->input('identityToken');
    $appleSignInPayload = ASDecoder::getAppleSignInPayload($identityToken);
    $isValid = $appleSignInPayload->verifyUser($user);
    // 當 $isValid 為 true 時驗證通過,后續邏輯根據需求編寫
    dd($isValid);
}

基於授權碼的驗證:

Sign in with Apple 后端 授權碼 驗證文檔:

https://developer.apple.com/documentation/signinwithapplerestapi/generate_and_validate_tokens

其中 iss 和 kid 的獲取方式:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM