web-dev-qa-db-ja.com

Playストアで公開されたアプリは、Google Maps APIおよびFacebook APIと通信できません

Android Studioで署名済みAPKを作成し、Google開発者コンソールとFacebookコンソールにSHA1フィンガープリントとアプリの相対APIキーを追加しました。署名済みAPKをUSB、それをインストールした後、マップAPIとFacebook APIはうまく機能します。同じapkをPlayストアにアップロードした場合、Facebookでログインしようとすると、「無効なキーハッシュです。キーハッシュblablablaは保存されているものと一致しません.. "。したがって、Facebookなしでログインすると、Googleマップを取得することさえできません。これにより、PlayストアにロードされたAPKが彼の指紋やそのようなものを変更していると思います。すべてを確認した= Android Developers and Stackoverflow、しかし私はそれを動作させることができません。奇妙なことに、この署名付きリリースAPKはPlayストアにロードするまでうまく機能するということです。

12
exrezzo

私は最終的に解決しました、問題はおそらくapiによって提供されたファイルgoogle_maps_api.xmlがリリースにロードされなかったため、i

私はそのようにしました:

buildTypes {
    debug {
        manifestPlaceholders = [mapsKey: "AIzaSyB8o9KzQ5YN8U8AFS************"]
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        manifestPlaceholders = [mapsKey: "AIzaSyApLacqgkdIR7uEpcf*****************"]
    }
}

そして私のAndroidManifestで

<meta-data
        Android:name="com.google.Android.geo.API_KEY"
        Android:value="${mapsKey}" />

リファレンス: https://stackoverflow.com/a/33917692/323556

次に、2つの異なるキーをそれぞれ適切なsha1フィンガープリントで登録しました。1つはデバッグ用で、もう1つはGoogle Play Consoleから提供されたものです(アップロード証明書ではなく、Googleが生成したもう1つ)。

ZuhadとAndy Developerにインスピレーションを与えてくれて本当にありがとう。

3
exrezzo

これが、Googleマップが表示されない理由の答えです

最近、Google PlayストアにAPKをアップロードしましたが、Play Consoleを確認した後、同じ問題に直面しました。この問題の解決策が見つかりました。

彼らはあなたの鍵に問題はありませんが、問題はあなたのSHA-1にあります。良好なSHA-1を使用してAPKに署名し、APKも正常にアップロードしました。

ただし、SHA-1を使用してAPKに署名し、APKをアップロードしたときのPlay Consoleの新しい更新では、署名は自分だけでしたが、新しい更新では、セキュリティを強化するためにGoogle Playでも署名されています。 Google Playセクションの一部をご覧ください。

Google Playアプリ署名の場合:アップロードキーを使用してアプリに署名します。次に、Googleはアップロードの鍵署名を検証して削除します。最後に、Googleは提供された元のアプリ署名鍵でアプリに再署名し、アプリをユーザーに配信します。

参照できます ドキュメントはこちら

今、あなたの質問の答えは次のとおりですAPKを正常にアップロードした後、2つのSHA-1のセクションで最初のSHA-1がGoogleによって作成されたことがわかりますそれ自身と2番目のSHA-1はあなたのものです

したがって、Google SHA-1をコピーして、Google Map APIキーを生成するコンソールに貼り付けます。

25
Andy Developer

@Andy Developerからインスピレーションを得て、アプリがGoogle Playにアップロードされた後に地図を表示できました。これらはステップでした:

  1. アプリをGoogle Playにアップロード(署名済みAPKファイル)
  2. アプリが送信されて承認されたら、 Google Play Console からアプリを選択します
  3. 開発ツール->リリース管理->アプリ署名

App Signing in Google Play Console

  1. アプリのアップロード後にGoogle Playが発行した最初のSHA-1証明書をコピーします。
  2. Google Console に移動し、プロジェクトを選択します。
  3. APIキーを選択し、キーを制限して、パッケージ名の後にSHA-1を貼り付けます。

Paste SHA-1 into Google Console

  1. 保存を押して、数分待ちます。アプリにはGoogleマップが表示されます。
23
ymerdrengene

はい、マップは署名済みAPKで読み込まれません。

解決:

Google APIコンソールでAPIキーを生成するときは、SHA keyでキーを制限する必要があります

ただし、署名済みAPkを生成した後、リリースモードSHAキーを取得し、APIのAPIコンソールに追加する必要があります enter image description here

画像を添付しました、ご覧ください

それが役に立てば幸い。

0
Zuhad

Facebookでハッシュキーを生成するには、次のコードを使用します。

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "YOUR PACKAGE NAME",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

ハッシュコードを受け取ったら、それをFacebook開発者コンソールに貼り付けて先に進みます

それが役に立てば幸い:)

0
Zuhad

アプリケーションのデバッグおよびリリースビルドタイプは、2つの異なるキーで署名されています。

サービスへのアクセスを許可するには、GoogleマップとFacebookの両方のキーを登録する必要があります

0
Robert Estivill