AccountManager抛出UnsupportedOperationException:getAuthTokenLabel

时间:2016-02-05 23:51:05

标签: android authentication android-account

我在Android应用中调用以下代码(用于针对Google App Engine进行身份验证,认为是旁边的):

AccountManager accountManager = AccountManager.get(this);
accountManager.getAuthToken(mAccount, "ah",null, false, new GetAuthTokenCallback(), null);

GetAuthTokenCallback()中抛出此错误:

android.accounts.AuthenticatorException: java.lang.UnsupportedOperationException: getAuthTokenLabel not supported

身份验证过程就此停止。

奇怪的是它完全在Android 5.5.1设备上运行;在6.0.1设备上发生UnsupportedOperationException错误。

我有GET_ACCOUNTS的运行时权限请求,我认为我需要,但怀疑错误源于此和Marshmellow的权限系统。

@TargetApi(23)
private boolean haveGetAccountPermission() {
    Log.i(TAG, "haveGetAccountPermission()");
    int hasWriteContactsPermission = ActivityCompat.checkSelfPermission(this,Manifest.permission.GET_ACCOUNTS);
    if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,new String[] {Manifest.permission.GET_ACCOUNTS},
                REQUEST_CODE_ASK_PERMISSIONS);
        return false;
    } else {
        return true;
    }
}

任何想法都非常感激。

1 个答案:

答案 0 :(得分:0)

我不知道这是否有帮助,但我发现在执行getAuthToken()之前立即创建一个新帐户会引发此异常。

在我的情况下,我试图重命名一个帐户,我发现如果我首先使用旧帐户执行getAuthToken()然后创建一个包含其内容的新帐户,异常将不再被抛出。

我怀疑这可能是棉花糖中的一个错误。