2015-12-15 53 views

回答

2

的OAuth2授权使用 访问令牌来访问,而不是使用用户名和密码的API。在 正常的OAuth2方法中,我们最初将使用范围,重定向URL和客户端ID从授权机构请求授权代码 ,然后 与客户端ID和客户端密钥交换代码以获得访问令牌 和刷新令牌。但使用Android AccountManager,我们可以轻松获得Google API的 访问令牌。

GoogleAuthUtil.getToken()有三个参数:上下文,电子邮件地址,以及另一个名为范围字符串参数。每个愿意谈论OAuth 2.0的信息资源都需要发布它使用的范围(或范围)。例如,要访问Google+ API,范围为oauth2:https://www.googleapis.com/auth/plus.me.您可以在一次调用中提供多个以空格分隔的范围,并获取提供对其全部访问权限的令牌。这样的代码可能是典型的:

private final static String G_PLUS_SCOPE = 
     "oauth2:https://www.googleapis.com/auth/plus.me"; 
    private final static String USERINFO_SCOPE = 
     "https://www.googleapis.com/auth/userinfo.profile"; 
    private final static String SCOPES = G_PLUS_SCOPE + " " + USERINFO_SCOPE; 

getToken()将是同步的,但三件事情保持它没有那么简单:

第一次应用程序请求令牌访问某些资源时,系统将需要与用户进行交互,以确保他们没问题。

无论何时您询问令牌,系统都可能与身份后端服务进行网络对话。

处理这些请求的基础架构可能会被大量加载,并且无法立即让您获得令牌。它不会让你等待,或者只是失败,它可能会要求你离开并稍后再回来。

礼貌去OAuth Identity Tools

https://developers.google.com/android/reference/com/google/android/gms/auth/GoogleAuthUtil.html#getToken(android.content.Context)