Поддерживаются ли Google Fit и OAuth 2.0 в материковом Китае? - PullRequest
0 голосов
/ 14 мая 2019

На странице 'https://developer.android.com/training/wearables/apps/creating-app-china', четко сказано, что "Счетчик шагов Google Fit в Google Fit поддерживается в Китае" и "Рекомендуется использовать OAuth 2.0", но при тестировании образца "BasicSensorsApi ', код запроса проверки подлинности OAuth 2.0 - «GoogleSignIn.hasPermissions (GoogleSignIn.getLastSignedInAccount (this), fitnessOptions)», а код запроса клиента Google Fit - «Fitness.getSensorsClient (this, GoogleSignIn.getLastSignedInAccount (this)) ...... ', оба примера кода требуют GoogleSignIn, как вы знаете, GoogleSignIn не поддерживается в Китае без VPN (с помощью которого я могу войти в учетную запись Google в материковом Китае), и я попытался запустить программу, но она не удаласьчтобы получить разрешения при закрытом VPN, и это успешно с открытым VPN, просто чтобы быть уверенным, нужна профессиональная помощь, чтобы подтвердить, что я был прав по этому поводу или нет.спасибо !!!

    /** Checks if user's account has OAuth permission to Fitness API. */
    private boolean hasOAuthPermission() {
        FitnessOptions fitnessOptions = getFitnessSignInOptions();
        return GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions);
    }
   /** Finds available data sources and attempts to register on a specific {@link DataType}. */
    private void findFitnessDataSources() {
        // [START find_data_sources]
        // Note: Fitness.SensorsApi.findDataSources() requires the ACCESS_FINE_LOCATION permission.
        Fitness.getSensorsClient(this, GoogleSignIn.getLastSignedInAccount(this))
                .findDataSources(
                        new DataSourcesRequest.Builder()
                                .setDataTypes(DataType.TYPE_LOCATION_SAMPLE)
                                .setDataSourceTypes(DataSource.TYPE_RAW)
                                .build())
                .addOnSuccessListener(
                        new OnSuccessListener<List<DataSource>>() {
                            @Override
                            public void onSuccess(List<DataSource> dataSources) {
                                for (DataSource dataSource : dataSources) {
                                    Log.i(TAG, "Data source found: " + dataSource.toString());
                                    Log.i(TAG, "Data Source type: " + dataSource.getDataType().getName());

                                    // Let's register a listener to receive Activity data!
                                    if (dataSource.getDataType().equals(DataType.TYPE_LOCATION_SAMPLE)
                                            && mListener == null) {
                                        Log.i(TAG, "Data source for LOCATION_SAMPLE found!  Registering.");
                                        registerFitnessDataListener(dataSource, DataType.TYPE_LOCATION_SAMPLE);
                                    }
                                }
                            }
                        })
                .addOnFailureListener(
                        new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Log.e(TAG, "failed", e);
                            }
                        });
        // [END find_data_sources]
    }
...