com.google.android.gms.common.api.ApiException: 4 and ...ApiException: 5000: 应用程序需要用户的 OAuth 同意

问题描述

我正在尝试连接到 google fit 并与其从我的应用程序交换健康数据。 这是我的代码

            if (!GoogleSignIn.hasPermissions(
                    GoogleSignIn.getLastSignedInAccount(getContext()),new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE)
            )) {
                GoogleSignInoptions gso = new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
                        .requestemail()
                        .requestScopes(new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE))
                        .build();
                GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this.getContext(),gso);

            
                Intent signInIntent = mGoogleSignInClient.getSignInIntent();
                startActivityForResult(signInIntent,RC_SIGN_IN);
            }

            if (!GoogleSignIn.hasPermissions(
                    GoogleSignIn.getLastSignedInAccount(getContext()),new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE)
            ))
            {
                Log.e("GOOGLE_FIT","no permission");

                GoogleSignIn.requestPermissions(
                        this,GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,GoogleSignIn.getLastSignedInAccount(getContext()),new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE)
                );


            } else {

                accessGoogleFit();
            }

以及访问 GoogleFit() 的方法

private void accessGoogleFit() {
    final  String LOG_TAG="i am here";
    Calendar cal = Calendar.getInstance();
    cal.setTime(new Date());
    long endTime = cal.getTimeInMillis();
    cal.add(Calendar.YEAR,-1);
    long startTime = cal.getTimeInMillis();

    DataReadRequest readRequest = new DataReadRequest.Builder()
            .aggregate(DataType.TYPE_STEP_COUNT_DELTA,DataType.AGGREGATE_STEP_COUNT_DELTA)
            .setTimeRange(startTime,endTime,TimeUnit.MILLISECONDS)
            .bucketByTime(1,TimeUnit.DAYS)
            .build();


    fitness.getHistoryClient(this.getContext(),GoogleSignIn.getLastSignedInAccount(this.getActivity()))
            .readData(readRequest)
            .addOnSuccessListener(new OnSuccessListener() {
                @Override
                public void onSuccess(Object o) {
                    Log.d(LOG_TAG,"onSuccess()");
                }


            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.e(LOG_TAG,"onFailure()",e);
                }
            })
            .addOnCompleteListener(new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    Log.d(LOG_TAG,"onComplete()");
                }
            });
}

执行时收到此错误

onFailure() com.google.android.gms.common.api.ApiException: 5000: 应用程序需要用户的 OAuth 同意 在 com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(com.google.android.gms:play-services-base@@17.1.0:4) 在 com.google.android.gms.common.internal.zai.zaf(com.google.android.gms:play-services-base@@17.1.0:2) 在 com.google.android.gms.common.internal.zak.onComplete(com.google.android.gms:play-services-base@@17.1.0:6) 在 com.google.android.gms.common.api.internal.BasePendingResult.zaa(com.google.android.gms:play-services-base@@17.1.0:176) 在 com.google.android.gms.common.api.internal.BasePendingResult.setResult(com.google.android.gms:play-services-base@@17.1.0:135) 在 com.google.android.gms.internal.fitness.zzae.setResult(com.google.android.gms:play-services-fitness@@20.0.0:3) 在 com.google.android.gms.internal.fitness.zzdp.zza(com.google.android.gms:play-services-fitness@@20.0.0:13) 在 com.google.android.gms.internal.fitness.zzbf.zza(com.google.android.gms:play-services-fitness@@20.0.0:11) 在 com.google.android.gms.internal.fitness.zza.onTransact(com.google.android.gms:play-services-fitness@@20.0.0:13) 在 android.os.Binder.execTransactInternal(Binder.java:1021) 在 android.os.Binder.execTransact(Binder.java:994)

我按照https://developers.google.com/fit/android/get-started中的步骤操作。

请帮助我并告诉我我做错了什么?

感谢 evreyone!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)