簡體   English   中英

使用www.googleapis.com和google-api-php-client驗證ID令牌

[英]Verifying id token using www.googleapis.com and google-api-php-client

所以我使用以下方式從我的android應用中檢索了令牌ID

GoogleSignInAccount acct = result.getSignInAccount();
String idToken = acct.getIdToken();

如果我嘗試使用https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=idToken驗證令牌

那就成功了; 我的意思是googleapis.com將返回類似以下內容:

{
iss: "https://accounts.google.com",
aud: "12312331-hjs13hbf0j1ge08s7lvepiupiljuokce.apps.googleusercontent.com",
sub: "23432432",
email_verified: "true",
azp: "12312331-nvi4gh28jekfm3e48ofqeh1c5rof2rsa.apps.googleusercontent.com",
email: "miowww@gmail.com",
iat: "123213123",
exp: "123213123",
name: "Me Miow",
picture: "https://lh5.googleusercontent.com/-XXXX/AAAAAAAAAAI/XXXX/XXXX/s96-c/photo.jpg",
given_name: "Me",
family_name: "Miow",
locale: "en",
alg: "RS256",
kid: "849996986ecf01a6c8xxxxxxx"
}

但是,如果使用庫https://github.com/google/google-api-php-client並從google \\ apiclient \\ examples運行idtoken.php?code = idToken庫,它將返回

Fatal error: Uncaught InvalidArgumentException: Invalid token format in /home/meowww/public_html/meniti/vendor/google/apiclient/src/Google/Client.php:423 Stack trace: #0 /home/meowww/public_html/meniti/idtoken.php(65): Google_Client->setAccessToken(Array) #1 {main} thrown in /home/meowww/public_html/meniti/vendor/google/apiclient/src/Google/Client.php on line 423

為什么google-api-php-client會顯示錯誤?

$_GET['code']是Google在驗證用戶身份后返回的唯一值。 它與id_token不同,這就是為什么要獲取InvalidArgumentException的原因。 您正在查看的示例實際上是一個auth示例,其中涵蓋了獲取ID令牌所需的所有步驟。 如果您已經擁有該令牌,並且還想在后端進行驗證,則可以跳過所有這些步驟,然后直接進行驗證。 那是:

$token_data = $client->verifyIdToken($id_token)->getAttributes();

我相信您需要啟用脫機訪問權限才能實現此目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM