基于this blog article我设法在后端使用Google OAuth2 API和示例Checker类验证了后端Google帐户的Android App客户端令牌。
我注意到GoogleIdToken.Payload#getIssuee()已被弃用。 JavaDoc解释说这个方法是
“计划在1.18中删除,使用 IdToken.Payload.getAuthorizedParty()代替。“
IdToken类使用OpenID Connect而不是OAuth 2.0,我需要将哪些修改应用于示例Checker类以使用OpenID Connect?
答案 0 :(得分:0)
无需进行任何更改:OpenID Connect是OAuth 2.0的扩展;您只需将代码更改为:
if (mVerifier.verify(token)) {
GoogleIdToken.Payload tempPayload = token.getPayload();
if (!tempPayload.getAudience().equals(mAudience))
mProblem = "Audience mismatch";
else if (!mClientIDs.contains(tempPayload.getAuthorizedParty()))
mProblem = "Client ID mismatch";
else
payload = tempPayload;
}
getIssuee方法的实现已经使用了同样的调用: https://code.google.com/p/google-api-java-client/source/browse/google-api-client/src/main/java/com/google/api/client/googleapis/auth/oauth2/GoogleIdToken.java
发生了什么事情,谷歌已经在GoogleIdToken类中实施了OpenID Connect avant la lettre的相关部分,这是他们的OAuth 2.0实现的一部分。从长远来看,最好使用Google自那时起添加的标准(非Google特定)OpenID Connect类:
https://code.google.com/p/google-oauth-java-client/source/browse/google-oauth-client/src/main/java/com/google/api/client/#client%2Fauth%2Fopenidconnect%253Fstate%253Dclosed
但只有当整个班级被标记为已弃用时才会变得紧急。