我想使用oauth2对用户进行身份验证以访问Google驱动器。使用AccountManager检索帐户然后获取令牌时,我可以获得所需的访问令牌:
mgr.blockingGetAuthToken(account, ApiConst.DRIVE_AUTH_SCOPE, true);
但我希望用户能够通过提供用户名和密码进行身份验证,而不是使用添加到手机中的帐户。这可能吗?
修改
所以我尝试在WebView中实现授权。我跟着this example。我已经解压缩了代码请求参数,但是用于检索访问令牌的代码似乎已被弃用,并且与Google Drive SDK使用的软件包不兼容。这是用于在示例中检索访问令牌的代码:
AccessTokenResponse accessTokenResponse = new GoogleAuthorizationCodeGrant(new NetHttpTransport(),
new JacksonFactory(),
OAuth2ClientCredentials.CLIENT_ID,
OAuth2ClientCredentials.CLIENT_SECRET,
code,
OAuth2ClientCredentials.REDIRECT_URI).execute();
这可以通过其他方式完成,还是应该放弃?
答案 0 :(得分:0)
如果您使用的是Android,则不需要执行所有操作来验证用户身份。 只需使用“GoogleAccountCredential”对象设置用户的帐户:
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, scopes);
credential.setSelectedAccountName(theGoogleAccount);
请记住,对于您需要的精选用户帐户:
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT);
然后您就可以初始化云端硬盘了:
Drive service = new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build();
问候。