问题描述
我正在尝试创建一个 Android 应用,该应用可以显示用户的 Google 相册中的照片。我在开发控制台中创建了一个项目(+ 还有与控制台中的项目链接的 Firebase 项目)。我启用了照片 API 并创建了所有必需的 API 密钥和 OAuth 条目。
我已经从 firebase 下载了 json 配置并将 google-services
插件添加到我的项目中。我正在使用密钥库对发布和调试变体(只是为了确定)进行签名,该密钥库的指纹在控制台中设置了正确的包。
GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
.requestScopes(
Scope("https://www.googleapis.com/auth/photoslibrary"),Scope("https://www.googleapis.com/auth/photoslibrary.sharing"),Scope("https://www.googleapis.com/auth/photoslibrary.readonly")
)
.requestemail()
.requestIdToken(getString(R.string.default_web_client_id)) // same as "Web client (auto created by Google Service)"
.build()
然后使用 GoogleSignIn.getClient(this,options).signInIntent
意图登录并从活动结果数据中获取帐户:
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
account = task.getResult(ApiException::class.java)
稍后我想使用 account.idToken
作为 "Authorization","Bearer $token"
标头来改造调用照片 API。
不幸的是它不起作用。我试图使用其他 oauth 客户端 ID,但我总是收到 401。此时我真的很绝望。知道我做错了什么吗?任何帮助将不胜感激!
这是带有授权承载和 API 密钥的实际请求到 API 和响应:
I/Okhttp.OkHttpClient: --> GET https://photoslibrary.googleapis.com/v1/albums?key=AIzaSy...Y
Accept: application/json
Authorization: Bearer eyJh...fqNxfru6A
I/Okhttp.OkHttpClient: --> END GET
I/Okhttp.OkHttpClient: <-- 401 https://photoslibrary.googleapis.com/v1/albums?key=AIzaSy...Y (354ms)
www-authenticate: Bearer realm="https://accounts.google.com/"
vary: Origin
vary: X-Origin
vary: Referer
content-type: application/json; charset=UTF-8
date: Tue,16 Feb 2021 19:08:37 GMT
I/Okhttp.OkHttpClient: server: ESF
cache-control: private
x-xss-protection: 0
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
alt-svc: h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
I/Okhttp.OkHttpClient: {
"error": {
"code": 401,"message": "Request had invalid authentication credentials. Expected OAuth 2 access token,login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.","status": "UNAUTHENTICATED"
}
}
<-- END HTTP (297-byte body)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)