我正在尝试对Azure中托管的移动应用程序使用Google OAuth身份验证,但获取不同格式的用户ID(SID)。
当我直接从浏览器访问API时,我被重定向到Google登录页面,并且在身份验证之后,我的API的下一个请求带有标题:
"x-ms-client-principal-name":"pavlolissovtest@gmail.com",
"x-ms-client-principal-id":"108491597139717511334",
"x-ms-client-principal-idp":"google",
"x-ms-token-google-access-token":"ya29.Ci9-A-oE8p4vVelYhRKqjMKY6KGxeW4OtXT-KGtBO3AxsiBqiCawn8sxL-qg4msWrw"
在 Windows Phone应用程序(使用WindowsAzure.MobileServices.MobileServicesClient进行身份验证)中,使用同一帐户登录时,请求会附带不同的标头:
"x-ms-client-principal-id":"sid:3fc89f071b7cb8f18919614ac46d3636",
"x-ms-client-principal-idp":"google",
"x-ms-token-google-access-token":"ya29.Ci9-AxC3kfrYrV8ssLUkbwFJJYDPsklsUH7r3HG0f6KB_wWzXV9AqE_wGPASiYxcWQ"
所以现在我对同一个用户帐户有不同的主要ID。 如果我现在为两个令牌调用https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=,,我会得到相同的结果:
{
"azp": "1083509260178-cntp3794bggcs5dtkse0mtbvpqigoa78.apps.googleusercontent.com",
"aud": "1083509260178-cntp3794bggcs5dtkse0mtbvpqigoa78.apps.googleusercontent.com",
"sub": "108491597139717511334",
"scope": "https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
"exp": "1476643317",
"expires_in": "3161",
"email": "pavlolissovtest@gmail.com",
"email_verified": "true",
"access_type": "online"
}
这允许我识别用户使用的登录选项,但是为每个请求调用googleapis是否真的正确? 从标题中识别用户的正确方法是什么,或者将一个值转换为另一个值?
让这些值有所不同是什么意思?
感谢您的建议!