web-dev-qa-db-ja.com

IonicネイティブGooglePlusログインはエラーなしで失敗します

https://ionicframework.com/docs/native/google-plus/ の指示に従いました。

私は作成しましたAndroid Client in https://console.cloud.google.com/apis/credentials/oauthclient 正しいSHA-1を使用して( keytool -list -printcert -jarfile <path to your apk>

ログインのコードは、説明のように簡単です:

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

ただし、thencatchのどちらにも含まれません。コンソールにエラーは表示されません。

Ionicバージョン3.20.0

Cordovaバージョン7.1.0

Ionic Native GooglePlus 5.3.0

Androidフォンバージョン5.1.1

cordova-plugin-googleplus 5.3.0

Ionic=============================================(ネイティブの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 console 42-これは、cordova-plugin-googleplusプラグインでエラー処理が適切に機能していないことを意味します。

7
heroin

最後に、根本的な原因と解決策が見つかりました。この問題は、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

UPDATE 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すべてのプラグインに新しい/古いバージョンが存在する可能性があります。これは、再生サービスを使用するプラグインです。通常、Googleサービスに関連するすべてのプラグインです。
  2. platforms/Android/project.propertiesすべての場所でPlayサービスバージョンを使用15.0.1(ここではバージョン1と同じバージョンにする必要があります)。
10
heroin

答えはヘロインありがとうございます。私の問題は:

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プラスが再び機能するようになりました。

5
Tee Vue

Android/project.properties、google_authおよびIDを含む行を次のように変更しようとしました

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

2
Brianhenry
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>
0
Anand_5050

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」ファイルで確認できます。

0
Sushil

プラグインをアンインストールする必要があります:

cordova plugin rm cordova-plugin-googleplus

そして再度インストールします:

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

これは私のために働いた。

0
Fernando

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:+
0
Gabriel Costa

私の場合、同じことがハッピングであり、ほぼ1か月間試してみましたが、最後に機能したのは、プラグインフォルダーを削除し、Androidプラットフォームを削除して再度追加したことです。それは誰かを助けるでしょう。

0
Anand_5050

私の場合、異なるバージョンを使用するとエラーが発生するため、playサービスの値を同じに変更して修正しました

これらの値を変更します

"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"
      },

プラットフォーム、www、pluginsフォルダーを削除し、「ionic cordova build Android」コマンドを実行すると、すべて機能します。

0
Stalin Maza