【问题标题】:Android Drive API OAuth BAD_AUTHENTICATIONAndroid Drive API OAuth BAD_AUTHENTICATION
【发布时间】:2016-12-22 01:33:14
【问题描述】:

我在使用 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 = 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)

【问题讨论】:

    标签: java android oauth google-drive-api


    【解决方案1】:

    根据thread,您收到错误可能是因为用户的帐户同时连接到托管帐户和 Google 帐户,并且可能每个帐户都有不同的密码 身份验证服务器目前不能很好地处理这个问题.按照这个Connecting to Google Drive with Google APIs Client Library for Java 教程。

    @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();
       ...
    }
    

    您还可以查看这些相关问题:

    希望这会有所帮助!

    【讨论】:

    • 好吧,你的修复实际上并没有奏效,我仍然赞成你的回答,但我的堆栈帐户不够高或其他什么,所以它不会公开显示..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2018-01-11
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多