几个月的自我,我的谷歌登录程序没有问题,但今天模拟器在Logcat中回复我这个错误:
E/Auth:[GoogleAccountDataServiceImpl] getToken() -> NEED_REMOTE_CONSENT。应用:com_pro.bandweb.mycpstore,服务:oauth2:email https://www.googleapis.com/auth/spreadsheets.readonly openid profile
尝试在 google 中查找,但我没有找到任何建议...这是我用于 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);
}
}
});