我正在尝试在测试Android应用中使用新的Gmail API。 在与授权进度进行了多次斗争后,我发现具体而言,GoogleAuthUtil.getToken()方法没有返回足够的访问令牌,可用于访问Gmail API功能(尝试执行任何操作时都会返回403错误API)。 也就是说,我设法获得足够令牌的唯一方法是使用WebView和(安装的应用程序 - > API控制台上的其他客户端ID)进行身份验证过程。 所以在某种程度上,这是一个双赢局面,因为我最终可以使用API,但剩下的问题是当用于API调用的访问令牌将过期或被泄露时会发生什么? 有没有办法在不弹出同意屏幕的情况下接收新令牌?所有用户都已批准该申请后。
非常感谢。
编辑:以下是使用刷新令牌获取新令牌的方法:感谢@Noam
httpClient = new DefaultHttpClient();
httpPost = new HttpPost(address);
params.add(new BasicNameValuePair("refresh_token", token));
params.add(new BasicNameValuePair("client_id", client_id));
params.add(new BasicNameValuePair("client_secret", client_secret));
params.add(new BasicNameValuePair("grant_type", "refresh_token"));
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
答案 0 :(得分:1)
您可以使用GoogleAuthUtil.getToken(),只需添加范围" https://www.googleapis.com/auth/gmail.readonly"使用builder.addScope()。