Ionic Native GooglePlus 登录失败,没有任何错误

Ionic Native GooglePlus login fails without any error

我遵循了 https://ionicframework.com/docs/native/google-plus/ 的指示。

我使用正确的 SHA-1 在 https://console.cloud.google.com/apis/credentials/oauthclient 中创建了 Android 客户端(使用 keytool -list -printcert -jarfile <path to your apk> 重新检查)

登录代码很简单,如说明:

this.googlePlus.login({})
.then(res => console.log(res))
.catch(err => console.error(err));

然而,它从来没有出现在 thencatch 中。 控制台中没有显示错误。

离子版本 3.20.0

科尔多瓦版本 7.1.0

Ionic Native GooglePlus 5.3.0

Android phone 版本 5.1.1

cordova-plugin-googleplus 5.3.0

我已经用了两天,Ionic Native Facebook 运行良好,而 GooglePlus 只是默默地失败。

请指教

更新 1

这似乎是 cordova-plugin-googleplus 的问题,因为我正在将 GooglePlus.execute 更改为使用

@Override
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
    this.savedCallbackContext = callbackContext;
    savedCallbackContext.error(42);
    action = "abracadabra";
    ... //remains unchanged

然后我在 Chrome 控制台 42 中看到 - 这意味着错误处理在 cordova-plugin-googleplus 插件中无法正常工作。

终于找到了根本原因和解决方案。发生此问题是因为 Google 更新了所有 com.google.android.gms:play-* 模块,这影响了所有 Google 服务 cordova 插件。

如果您只使用 Google Plus 插件,那么我认为一切都应该没问题。

在其他情况下,project.properties、plugin.xml 文件到 com.google.android.gms:play-* 的所有依赖项应替换为旧版本 11.8.0:

com.google.android.gms:play-services-auth:+

应该是

com.google.android.gms:play-services-auth:11.8.0

我知道,这最好称为解决方法,但没有其他解决方案有效。

感谢来自:

https://github.com/EddyVerbruggen/cordova-plugin-googleplus/issues/492

https://github.com/EddyVerbruggen/cordova-plugin-googleplus/issues/484

https://github.com/EddyVerbruggen/cordova-plugin-googleplus/issues/488

更新 08.10.2018

上次更新后,插件再次无法使用。 问题的发生是因为 ``com.google.android.gms:play-services-:`.

的版本冲突

例如,com.google.android.gms:play-services-maps:15.0.1,由 Google 地图插件使用,com.google.android.gms:play-services-auth:11.8.0 由 Google Plus 插件使用。

解决方法很简单:

  1. config.xml 中,将 <variable name="PLAY_SERVICES_VERSION" value="15.0.1" />(而不是 15.0.1(可能有 newer/older 版本)放入每个使用播放服务的插件 - 通常所有与 Google服务。
  2. platforms/android/project.properties中到处使用播放服务版本15.0.1(此处应与第1点中的版本相同)。

我试图将 android/project.properties,带有 google_auth 和标识的行更改为

cordova.system.library.5=com.google.android.gms:play-services-auth:+ cordova.system.library.6=com.google.android.gms:play-services-identity:+

谢谢海洛因的回答。我的问题是:

1) com.google.android.gms:play-services-tagmanager:+

2) com.google.android.gms:play-services-auth:11.8.0

3) com.google.android.gms:play-services-identity:11.8.0

我按照海洛因的建议修复了它,但我删除了 2) 和 3) 的 11.8.0,并将其替换为“+”。然后我进入config.xml发现了:

变量名="PLAY_SERVICES_VERSION"值=“11.8.0”

按照海洛因的建议,将“11.8.0”替换为“+”。重新编译和 运行,现在 google plus 再次工作。

I  used com.google.android.gms:play-services-auth:11.8.0 but still popup is not coming. No error. it never comes into neither then nor catch. No error is displayed in console.

Tried below code :

<code>
      if (this.platform.is('cordova')) {
        this.googlePlus.login({
          'scopes': '', // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
          'webClientId': environment.googleWebClientId, // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
          'offline': true
        }).then((response) => {
          const googleCredential = firebase.auth.GoogleAuthProvider.credential(response.idToken);
          firebase.auth().signInWithCredential(googleCredential)
          .then(user => {
            console.log("Firebase success: " + JSON.stringify(user));
            resolve();
        });
        },(err) => {
         console.log("Error in doGoogleLogin " + err);
          reject(err);
        });
      }
</code>

在我的情况下,同样的事情正在发生,我尝试了将近 1 个月,最后对我有用的是我删除了我的插件文件夹并删除了 android 平台并再次添加它。它对我有用。希望对大家有所帮助。

platforms>android>project.properties

变化:

cordova.system.library.6=com.google.android.gms:play-services-auth:11.8.0
cordova.system.library.7=com.google.android.gms:play-services-identity:11.8.0

至:

cordova.system.library.6=com.google.android.gms:play-services-auth:+
cordova.system.library.7=com.google.android.gms:play-services-identity:+

在我的例子中,我通过将播放服务的值更改为相同来修复它,因为使用不同的版本会导致一些错误

所以我更改了这些值

"cordova-plugin-request-location-accuracy": {
        "PLAY_SERVICES_LOCATION_VERSION": "16.+"
      },
      "cordova-plugin-googleplus": {
        "REVERSED_CLIENT_ID": "MY_REVERSED_ID",
        "PLAY_SERVICES_VERSION": "11.8.0"
      },

"cordova-plugin-request-location-accuracy": {
        "PLAY_SERVICES_LOCATION_VERSION": "11.8.0"
      },
      "cordova-plugin-googleplus": {
        "REVERSED_CLIENT_ID": "MY_REVERSED_ID",
        "PLAY_SERVICES_VERSION": "11.8.0"
      },

并删除 platforms、www 和 plugins 文件夹并执行 "ionic cordova build android" 命令,一切正常。

我对 ionic 4 也有同样的问题。

以下更改解决了我的问题:-----

之前:

cordova.system.library.5=com.google.android.gms:play-services-auth:11.8.0
cordova.system.library.6=com.google.android.gms:play-services-identity:11.8.0

之后:

cordova.system.library.5=com.google.android.gms:play-services-auth:15.0.1
cordova.system.library.6=com.google.android.gms:play-services-identity:15.0.1

您可以在 "platform/android/project.properties" 文件中找到此设置。

您必须卸载您的插件:

cordova plugin rm cordova-plugin-googleplus

然后重新安装:

cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=<you_reversed_client_id>

这对我有用。