1

再会!我在使用 GoogleSignInApi 时遇到问题。当我通过 WIFI 连接使用它时,它工作得很好。但是当我关闭 WIFI 并仅使用移动数据时,我得到了GoogleSignInStatusCodes.NETWORK_ERROR来自Auth.GoogleSignInApi.getSignInIntent活动的结果。

我正在使用 Firebase UI 进行身份验证,但我想它与模块无关,因为我直接从 GoogleSignInApi 获取网络错误。

这是我设置 SignInOptions 时的样子:

String mClientId = activity.getString(R.string.default_web_client_id);
GoogleSignInOptions googleSignInOptions;

GoogleSignInOptions.Builder builder = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(mClientId);               

for (String scopeString : idpConfig.getScopes()) {
    builder.requestScopes(new Scope(scopeString));
}

if (!TextUtils.isEmpty(email)) {
    builder.setAccountName(email);
}
googleSignInOptions = builder.build();

mGoogleApiClient = new GoogleApiClient.Builder(activity)
.enableAutoManage(activity, AUTO_MANAGE_ID, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
.build();

这就是我启动登录活动的方式:

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
activity.startActivityForResult(signInIntent, RC_SIGN_IN);

我得到了NETWORK_ERROR这里:

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if (result != null) {
                if (result.isSuccess()) {
                    mIDPCallback.onSuccess(createIDPResponse(result.getSignInAccount()));
                } else {
                    onError(result);
                }
            } else {
                onError("No result found in intent");
            }
        }
    }

在按键等上。我已经正确配置了所有内容,因为它在 WIFI 上运行良好。

在权限结束时,我拥有所有请求的权限(并且也正确处理了 Android 6.0)

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />

任何帮助都将不胜感激。

4

1 回答 1

0

原来我已经禁用了 Google Play 设置的后台数据。这导致我默认情况下即使在 3G 上也有正确的互联网连接,但是 Google Play 服务被阻止访问互联网,这阻止了任何 GooglePlay 服务的运行。

于 2016-11-08T18:47:28.360 回答