getToken()仅提供刷新令牌

时间:2013-01-23 14:50:01

标签: google-drive-api

我正在开发一个登录Gdrive服务的Android应用程序,在询问用户授予权限后,它会保存令牌并将其发送到我们的后端,这是向gdrive服务本身询问内容的后端。以前,我使用AccountManager登录,但几周前我收到了一封来自Google的电子邮件,要求将授权流程移至Google Play服务库。我在获取令牌时遇到问题,这是我的代码:

GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(myApp.getApplicationContext(), DriveScopes.DRIVE);

Account[] mAccounts = credential.getAllAccounts();

选择要登录的帐户后,听众会这样做:

Account account = mAccounts[position];
credential.setSelectedAccountName(account.name);
new GetDriveServiceTask().execute(credential);

private class GetDriveServiceTask extends AsyncTask<GoogleAccountCredential, Void, Void> {
        protected Void doInBackground(GoogleAccountCredential... credentials) {
            try{
                 GoogleAccountCredential credential = credentials[0];
                 String token = credential.getToken();
            } catch (UserRecoverableAuthException e) {
                  UserRecoverableAuthException exception = (UserRecoverableAuthException) e;
                  Intent authorizationIntent = exception.getIntent();
                  startActivityForResult(authorizationIntent,REQUEST_PERMISSIONS); 
            }

当用户之前访问他/她的帐户时,我遇到了问题,命令credential.getToken();只给我一些我认为是刷新令牌的东西,比如:“1 / SGvUDUNnRG8wVs_REISKx1xuupbwAKeEQ5fHXH-rbOk”...我怎样才能从中获取访问令牌?

我尝试将帖子发送到网址“https://accounts.google.com/o/oauth2/token”,如下所述:https://developers.google.com/accounts/docs/OAuth2WebServer#refresh但我每次都会收到unauthorized_client ...

请我被困在这里,电子邮件说,AccountManager方法将在2月1日停止工作......

提前致谢!

1 个答案:

答案 0 :(得分:-2)

您应该授权使用Google Play服务,但这只会为您提供访问令牌。 有关如何使用Google Play服务授权Android应用以向Drive API发送请求的示例,请查看以下快速入门指南:

https://developers.google.com/drive/quickstart-android