我在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设备上。
我有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;
}
}
任何想法都非常感谢。
这是否有帮助,但我发现在执行getAuthToken()
之前立即创建一个新帐户会引发此异常。
正在尝试重命名一个帐户,我发现如果我首先使用旧帐户执行getAuthToken()
,然后创建一个包含其内容的新帐户,则不会再抛出异常。
我怀疑这可能是棉花糖中的一个错误。