Google存储访问来自Android的NONService帐户-403禁止/访问未配置



这是一次令人沮丧的经历。我正在尝试访问Google Cloud Storage(列出任何人的存储桶访问权限),并通过Android通过A >>>>>>>>>>>>>> 帐户。

这是我的代码:

    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
    import com.google.api.client.http.HttpTransport;
    import com.google.api.client.http.InputStreamContent;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.jackson2.JacksonFactory;
    import com.google.api.services.storage.Storage;
    import com.google.api.services.storage.model.Bucket;
    import com.google.api.services.storage.model.StorageObject;
    HttpTransport httpTransport = new NetHttpTransport();
    JsonFactory jsonFactory = new JacksonFactory();
    Credential credential = new GoogleCredential.Builder()
            .setClientSecrets("ANDROID_CLIENT_ID_FROM_DEV_CONSOLE", "some random string, since no clienet secret for android")
            .setJsonFactory(jsonFactory)
            .setTransport(httpTransport)
            .build();
    credential.setAccessToken(token);
    Storage storage = new Storage.Builder(httpTransport, jsonFactory,
            credential)
            .setApplicationName("My app name")
            .build();
    List<StorageObject> objects = storage.objects().list("my-bucket").execute().getItems()   

注意事项:

  • 我得到有效的OAuth令牌,其中具有以下范围:" oauth2:https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/devstorage.read_write.write"

  • 我有Google Cloud Storage JSON API和Google Cloud Storage在我的Cloud Dev Console的API部分中启用。

  • 作为替代方案,我尝试使用serivce帐户进行设置(即创建GoogleCredential时使用SetServiceAccountId(...)之类的方法),它可以很好地工作。但是,根据上述代码段!

  • ,我希望它代表授权用户工作
  • 我的所有代码都在com.mytestapp包中。这是我在创建Android客户端ID时指定的软件包。

  • 我正在通过Android Studio的调试器启动该应用程序,而该应用程序是在我的物理Android设备上启动的。

问题语句:

在执行上面的列表存储器操作时,我得到了此JSON例外:

com.google.api.client.googleapis.json.googlejsonresponseException:403禁止{ "代码":403, "错误":[{{ "域":" usagelimits", "消息":"未配置访问。您的项目未启用API(云存储API)。

我在做什么错?是因为我不是在设置客户秘密吗?(我认为不再为Android提供客户秘密)。还是应用程序名称必须非常具体?我将其设置为一些自由形式的文本字符串。

我认为这应该简单明了!

至少 - 是否有一个连贯的,完整的示例,说明Android上的 nonservice 帐户如何执行此操作?我在整个地方搜索没有任何运气。

好的,我解决了它。该应用程序的SHA1签名是错误的。因此,它与Google之间的凭据不匹配。

相关内容

  • 没有找到相关文章

最新更新