【问题标题】:Obtaining offline access for Web back-end using GoogleAuthUtil使用 GoogleAuthUtil 获取 Web 后端的离线访问权限
【发布时间】:2013-11-27 04:27:06
【问题描述】:

我正在尝试使用 Android 应用程序为我的 Web 后端获取授权代码。根据cross-client authorization documentation,我应该调用GoogleAuthUtil.getAuthToken(),范围看起来像oauth2:server:client_id:<back-end client id>:api_scope:resource-1 resource-2 这是我形成范围的方式:

private String getOAuthScope() {
    final String scope = "email openid";
    return String.format("oauth2:server:client_id:%s:api_scope:%s",
                         GoogleOAuthData.GOOGLE_OAUTH_SERVER_CLIENT_ID, scope);

当我调用GoogleAuthUtil.getAuthToken() 时,我收到了INVALID_SCOPE 异常。形成范围的正确方法是什么?

【问题讨论】:

  • 这不是问题的直接答案,但是......每当您遇到诸如此类的 oauth 问题时,我发现最好的调试技术是跟踪网络请求。您通常可以立即看到问题所在。对于 Android,这在此处进行了描述 code.google.com/p/google-http-java-client/wiki/HTTP
  • 嘿@Ivan Gromov,这曾经对我有用,但就在几天前它停止工作,现在它抛出这个错误 com.google.android.gms.auth.GoogleAuthException: Unknown。知道为什么吗?我的瞄准镜有问题吗? gist.github.com/lawloretienne/7351151
  • 相同的 GoogleAuthException:我未知。

标签: java android oauth-2.0


【解决方案1】:

我最初认为您使用的范围名称不正确(例如“电子邮件”而不是“https://mail.google.com/”),但根据https://developers.google.com/accounts/docs/OAuth2Login,名称对于特定用途是正确的。但是,看起来预期的范围字符串是 "openid, email" 而不是 "email openid"。

“未知”异常的来源是您的服务器和客户端不是同一个 API 控制台项目的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2015-04-20
    • 2013-09-18
    相关资源
    最近更新 更多