android - Google 登录错误 getToken() -> NEED_REMOTE_CONSENT
问题描述
几个月的自我,我的谷歌登录程序没有问题,但今天模拟器在 Logcat 中回复我这个错误:
E/Auth:[GoogleAccountDataServiceImpl] getToken() -> NEED_REMOTE_CONSENT。应用:com_pro.bandweb.mycpstore,服务:oauth2:email https://www.googleapis.com/auth/spreadsheets.readonly openid profile
尝试查看谷歌,但我没有找到任何建议......这是我用于 sigIn 的代码:
public void InitGoogle() throws IOException {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(SPREADSHEETS_SCOPE))
.requestEmail()
.build();
googleSignInClient = com.google.android.gms.auth.api.signin.GoogleSignIn.getClient(this, gso);
if (GoogleSignIn.getLastSignedInAccount(this) == null) {
Log.v(TAG, "getting sign-on again");
//startActivityForResult(googleSignInClient.getSignInIntent(), RC_SIGN_IN);
SignInActivityResult.launch(googleSignInClient.getSignInIntent());
} else {
Log.v(TAG, "sign-on is still good, reusing");
//faccio la richiesta solo se è stato inserito il foglio di google shhet nelle preferenze, altrimenti avviso
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
if (!sharedPreferences.contains(getString(R.string.pref_googleSheetId_key))
|| StringUtils.isBlank(sharedPreferences.getString(getString(R.string.pref_googleSheetId_key), ""))
|| !(spreadsheetIdPattern.matcher(sharedPreferences.getString(getString(R.string.pref_googleSheetId_key), ""))).find()) {
// no Google sheet ID has been specified - can't retrieve ingredients
progressBar.setVisibility(ProgressBar.GONE);
Toasty.info(this, getString(R.string.missing_pref_id_sheet_title), Toasty.LENGTH_LONG, true).show();
}else {
//scelgo il tipo di sincronizzazione quando inizializzo il tablet, in base alla scelta nelle preferenze
if(AppSettings.get().getSyncModeOnStartup() == UPLOAD_DATI)
synchGoogleSheet(UPLOAD_DATI);
else if(AppSettings.get().getSyncModeOnStartup() == DOWNLOAD_DATI)
synchGoogleSheet(DOWNLOAD_DATI);
else
synchGoogleSheet(UPLOAD_DOWNLOAD_NONE);
}
}
progressBar.setVisibility(ProgressBar.GONE);
..
..
..
..
ActivityResultLauncher<Intent> SignInActivityResult= registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode() != RESULT_CANCELED) {
if (result.getResultCode() == Activity.RESULT_OK && null != result.getData())
{
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
handleSignInResult(task);
}
}else{
progressBar.setVisibility(ProgressBar.GONE);
}
}
});
解决方案
我在装有 Android 11 的 Google Pixel 5 上遇到了同样的问题。
2021-08-11 13:32:59.603 29917-30363/? E/Auth: [GoogleAccountDataServiceImpl] getToken() -> NEED_REMOTE_CONSENT. App: de.aoksystems.ma.abp.app.internal, Service: oauth2:https://www.googleapis.com/auth/fitness.activity.read https://www.googleapis.com/auth/fitness.heart_rate.read https://www.googleapis.com/auth/fitness.nutrition.read
但它在搭载 Android 11 的三星 S10 上运行良好
4 周前它起作用了。
推荐阅读
- java - EhCache 3.x:对于某个实体类,限制缓存实例的数量,可以吗?
- python - 使用另一个列表修改列表
- java - 后续 Input & OutputStream 的 Java 模式
- python - BeautifulSoup 和抓取 href 不起作用
- javascript - 在动态 javascript 表中输入文本
- apache-spark - EMR 上的 Spark Streaming Kinesis 引发“将块存储到 Spark 时出错”
- ios - 在 Swift 中尝试将单元格分配给 UICollectionView 中的某些部分时,如何遍历数组?
- javascript - 如何使用 JavaScript 禁用 Evernote 网页视图“最大宽度”?
- html - 在我的本地机器上创建一个网页。链接转到 file:/// 而不是 http://
- javascript - 无法重定向到另一个 HTML 页面