java Android Drive API OAuth BAD_AUTHENTICATION
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/38961958/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Android Drive API OAuth BAD_AUTHENTICATION
提问by wdavies973
I'm having a problem with the Google Drive REST v3 android API. The OAuth token is getting a BAD_AUTHENTICATION result. Here's the connection code I'm using. It can also be noted that the OAuth consent screen is not showing up, and after a short period of time, I get the BAD_AUTHENTICATION result. Am I required to manually pass a refresh token to the server or something?
我在使用 Google Drive REST v3 android API 时遇到了问题。OAuth 令牌获得 BAD_AUTHENTICATION 结果。这是我正在使用的连接代码。还可以注意到 OAuth 同意屏幕没有出现,在很短的一段时间后,我得到了 BAD_AUTHENTICATION 结果。我是否需要手动将刷新令牌传递给服务器或其他什么?
// Gather credentials
credential = GoogleAccountCredential.usingOAuth2(getApplicationContext(), Arrays.asList(SCOPES)).setBackOff(new ExponentialBackOff());
SharedPreferences settings = getSharedPreferences("Roblu", Context.MODE_PRIVATE);
String accountName = settings.getString("accountName", "");
credential.setSelectedAccountName(accountName);
// Start Google services
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = HymansonFactory.getDefaultInstance();
service = new com.google.api.services.drive.Drive.Builder(transport, jsonFactory, credential).setApplicationName("Roblu").build();
Here's the result code:
这是结果代码:
08-15 14:11:27.621 4929-15182/? E/Auth: [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-238957088>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/games
dkq: Long live credential not available.
at dkr.a(:com.google.android.gms:3101)
at dje.a(:com.google.android.gms:397)
at djd.a(:com.google.android.gms:31369)
at djd.a(:com.google.android.gms:313)
at elb.a(:com.google.android.gms:1201)
at ela.a(:com.google.android.gms:530)
at ela.a(:com.google.android.gms:196)
at dfw.a(:com.google.android.gms:320)
at dfw.a(:com.google.android.gms:210)
at dgf.a(:com.google.android.gms:1498)
at dge.a(:com.google.android.gms:909)
at dge.e(:com.google.android.gms:523)
at dgd.a(:com.google.android.gms:37)
at dhm.getAuthToken(:com.google.android.gms:178)
at android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:214)
at android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113)
at android.os.Binder.execTransact(Binder.java:453)
采纳答案by abielita
Based from this thread, you're getting an error maybe because the user's account is attached to both a hosted account and a Google account, and probably it has different passwords for each The authentication servers currently do not handle this well. Follow this Connecting to Google Drive with Google APIs Client Library for Javatutorial.
基于此线程,您收到一个错误,可能是因为用户的帐户同时附加到托管帐户和 Google 帐户,并且可能每个帐户都有不同的密码。身份验证服务器目前不能很好地处理这个问题。按照此使用 Java 版 Google API 客户端库连接到 Google Drive教程进行操作。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
// Google Accounts using OAuth2
m_credential = GoogleAccountCredential.usingOAuth2(this, Collections.singleton(DriveScopes.DRIVE));
m_client = new com.google.api.services.drive.Drive.Builder(
m_transport, m_jsonFactory, m_credential).setApplicationName("AppName/1.0")
.build();
...
}
You can also check on these related issues:
您还可以检查这些相关问题:
Hope this helps!
希望这可以帮助!