Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android驱动器API OAuth错误的\u身份验证_Java_Android_Oauth_Google Drive Api - Fatal编程技术网

Java Android驱动器API OAuth错误的\u身份验证

Java Android驱动器API OAuth错误的\u身份验证,java,android,oauth,google-drive-api,Java,Android,Oauth,Google Drive Api,我对Google Drive REST v3 android API有问题。OAuth令牌获得错误的\u身份验证结果。这是我正在使用的连接代码。还可以注意到,OAuth同意屏幕没有显示,在很短的一段时间后,我得到了坏的_认证结果。我是否需要手动将刷新令牌传递给服务器或其他什么 // Gather credentials credential = GoogleAccountCredential.usingOAuth2(getApplicationContext(), Arrays.asList(S

我对Google Drive REST v3 android API有问题。OAuth令牌获得错误的\u身份验证结果。这是我正在使用的连接代码。还可以注意到,OAuth同意屏幕没有显示,在很短的一段时间后,我得到了坏的_认证结果。我是否需要手动将刷新令牌传递给服务器或其他什么

// 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 = JacksonFactory.getDefaultInstance();
service = new com.google.api.services.drive.Drive.Builder(transport, jsonFactory, credential).setApplicationName("Roblu").build();
以下是结果代码:

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)
08-15 14:11:27.6214929-15182/?E/Auth:[GoogleAccountDataServiceImpl]getToken()->错误的身份验证。帐户:,应用程序:com.google.android.gms,服务:oauth2:https://www.googleapis.com/auth/games
dkq:长寿凭证不可用。
在dkr.a(:com.google.android.gms:3101)
在dje.a(:com.google.android.gms:397)
在djd.a(:com.google.android.gms:31369)
在djd.a(:com.google.android.gms:313)
在elb.a(:com.google.android.gms:1201)
在ela.a(:com.google.android.gms:530)
在ela.a(:com.google.android.gms:196)
在dfw.a(:com.google.android.gms:320)
在dfw.a(:com.google.android.gms:210)
在dgf.a(:com.google.android.gms:1498)
在dge.a(:com.google.android.gms:909)
在dge.e(:com.google.android.gms:523)
在dgd.a(:com.google.android.gms:37)
在dhm.getAuthToken(:com.google.android.gms:178)
位于android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:214)
位于android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113)
位于android.os.Binder.execTransact(Binder.java:453)
基于此,您会收到一个错误,可能是因为用户的帐户同时连接到托管帐户和谷歌帐户,并且可能每个帐户都有不同的密码。目前,身份验证服务器无法很好地处理此问题。遵循本教程

@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();
   ...
}
您还可以检查这些相关问题:


希望这有帮助

好吧,你的修正实际上没有起作用,我仍然提高了你的答案,但我的堆栈帐户不够高,或者什么的,所以它还不会公开显示。。