Android 应用程序 Google 相册 API 401 错误

问题描述

我正在尝试创建一个 Android 应用,该应用可以显示用户的 Google 相册中的照片。我在开发控制台中创建了一个项目(+ 还有与控制台中的项目链接的 Firebase 项目)。我启用了照片 API 并创建了所有必需的 API 密钥和 OAuth 条目。

enter image description here

enter image description here

我已经从 firebase 下载了 json 配置并将 google-services 插件添加到我的项目中。我正在使用密钥库对发布和调试变体(只是为了确定)进行签名,该密钥库的指纹在控制台中设置了正确的包。

代码中,我使用 Google 身份验证服务登录用户

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...