Androidアプリがあります。バックエンドでFirebaseを使用し、Facebook(およびGoogle)経由でソーシャルログインを提供します。
最近Facebookから連絡があり、Facebook経由でログインしたときにアプリがクラッシュする/応答しないという警告が表示されました。混乱して、私はいくつかのテストに乗り出しました。
私が見つけたのは、FacebookアプリをインストールせずにFacebookログインを使用すると、すべてが完全に機能することです。ユーザーにブラウザウィンドウが表示され、ログインできるようになり、ユーザーは私のアプリにリダイレクトされ、身元がわかります。もちろん、私は開発中にこれをすべて見つけましたが、物事がまだ機能していることを確認したかっただけです。
しかし、Facebookアプリ(開発中に無視したこと)をインストールしたところ、機能しなくなったことがわかりました。代わりに、ユーザーはこのページにリダイレクトされます。
検索とアクセシビリティについては、この画像のテキストは次のようになります。
ログインエラー:このアプリケーションへのログイン中にエラーが発生しました。後でもう一度やり直してください。
これが発生したときにログを確認したところ、次のが関連している可能性があることがわかりましたが、実際にはわかりません。
07-05 15:36:28.468 908 5828 I ActivityManager: START u0 {act=NATIVE_WITH_FALLBACK cmp=<<redacted>>/com.facebook.FacebookActivity (has extras)} from uid 10264
07-05 15:36:28.469 665 665 D QCOM PowerHAL: LAUNCH HINT: ON
07-05 15:36:28.470 665 665 D QCOM PowerHAL: Activity launch hint handled
07-05 15:36:28.495 4837 4837 W ActivityThread: handleWindowVisibility: no activity for token Android.os.BinderProxy@e64bd3e
07-05 15:36:28.689 665 665 D QCOM PowerHAL: LAUNCH HINT: OFF
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: Exception during service
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: X.2LH: [code] 404 [message]: Key hash GtvUdcOKFRAE0RY0LIw5veCA+M8= does not match any stored key hashes. (404) [extra]: null
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1eL.C(:93)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.2sO.C(:26)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.CvC.umA(:38)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.2yi.handleResponse(:224)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1dO.run(:71)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:458)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.0r0.run(:2)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1qG.run(:2)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1167)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:641)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.12V.run(:3)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1xB.run(:12)
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at Java.lang.Thread.run(Thread.Java:764)
07-05 15:36:28.981 908 8581 I ActivityManager: START u0 {cmp=com.facebook.katana/.ProxyAuth (has extras)} from uid 10264
07-05 15:36:28.982 665 665 D QCOM PowerHAL: LAUNCH HINT: ON
07-05 15:36:28.983 665 665 D QCOM PowerHAL: Activity launch hint handled
07-05 15:36:29.022 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token Android.os.BinderProxy@4f13a10
07-05 15:36:29.037 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory
07-05 15:36:29.037 29406 29406 E Instrumentation: Java.lang.Throwable
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.Instrumentation.getFactory(Instrumentation.Java:1224)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.Instrumentation.newActivity(Instrumentation.Java:1215)
07-05 15:36:29.037 29406 29406 E Instrumentation: at X.05O.newActivity(:3382)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2869)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3086)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Java:78)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.Java:108)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.Java:68)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1816)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.os.Handler.dispatchMessage(Handler.Java:106)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.os.Looper.loop(Looper.Java:193)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Android.app.ActivityThread.main(ActivityThread.Java:6718)
07-05 15:36:29.037 29406 29406 E Instrumentation: at Java.lang.reflect.Method.invoke(Native Method)
07-05 15:36:29.037 29406 29406 E Instrumentation: at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:493)
07-05 15:36:29.037 29406 29406 E Instrumentation: at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:858)
07-05 15:36:29.045 908 2933 I ActivityManager: START u0 {flg=0x2000000 cmp=com.facebook.katana/com.facebook.gdp.ProxyAuth (has extras)} from uid 10262
07-05 15:36:29.047 665 665 D QCOM PowerHAL: LAUNCH HINT: ON
07-05 15:36:29.068 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token Android.os.BinderProxy@f095b27
07-05 15:36:29.069 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory
07-05 15:36:29.069 29406 29406 E Instrumentation: Java.lang.Throwable
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.Instrumentation.getFactory(Instrumentation.Java:1224)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.Instrumentation.newActivity(Instrumentation.Java:1215)
07-05 15:36:29.069 29406 29406 E Instrumentation: at X.05O.newActivity(:3382)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2869)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3086)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Java:78)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.Java:108)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.Java:68)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1816)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.os.Handler.dispatchMessage(Handler.Java:106)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.os.Looper.loop(Looper.Java:193)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Android.app.ActivityThread.main(ActivityThread.Java:6718)
07-05 15:36:29.069 29406 29406 E Instrumentation: at Java.lang.reflect.Method.invoke(Native Method)
07-05 15:36:29.069 29406 29406 E Instrumentation: at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:493)
07-05 15:36:29.069 29406 29406 E Instrumentation: at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:858)
07-05 15:36:29.074 908 5828 I ActivityManager: START u0 {cmp=com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity (has extras)} from uid 10262
07-05 15:36:29.075 665 665 D QCOM PowerHAL: LAUNCH HINT: ON
07-05 15:36:29.121 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token Android.os.BinderProxy@d695c17
07-05 15:36:29.125 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory
07-05 15:36:29.125 29406 29406 E Instrumentation: Java.lang.Throwable
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.Instrumentation.getFactory(Instrumentation.Java:1224)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.Instrumentation.newActivity(Instrumentation.Java:1215)
07-05 15:36:29.125 29406 29406 E Instrumentation: at X.05O.newActivity(:3382)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2869)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3086)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Java:78)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.Java:108)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.Java:68)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1816)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.os.Handler.dispatchMessage(Handler.Java:106)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.os.Looper.loop(Looper.Java:193)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Android.app.ActivityThread.main(ActivityThread.Java:6718)
07-05 15:36:29.125 29406 29406 E Instrumentation: at Java.lang.reflect.Method.invoke(Native Method)
07-05 15:36:29.125 29406 29406 E Instrumentation: at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:493)
07-05 15:36:29.125 29406 29406 E Instrumentation: at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:858)
07-05 15:36:29.166 4837 4846 W System : A resource failed to call end.
07-05 15:36:29.250 665 665 D QCOM PowerHAL: LAUNCH HINT: OFF
07-05 15:36:29.266 908 952 I ActivityManager: Displayed com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity: +237ms
07-05 15:36:29.266 29463 29463 W BackgroundBroad: type=1400 audit(0.0:9257): avc: denied { read } for name="stats" dev="proc" ino=4026533031 scontext=u:r:untrusted_app:s0:c6,c257,c512,c768 tcontext=u:object_r:proc_qtaguid_stat:s0 tclass=file permissive=0
07-05 15:36:29.447 492 1273 D SurfaceFlinger: duplicate layer name: changing Surface(name=6e58560 com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity)/@0x13e5ed5 - animation-leash to Surface(name=6e58560 com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity)/@0x13e5ed5 - animation-leash#1
07-05 15:36:29.456 492 1273 D SurfaceFlinger: duplicate layer name: changing Surface(name=Dim Layer for - Task=2317)/@0x8471ddb - animation-leash to Surface(name=Dim Layer for - Task=2317)/@0x8471ddb - animation-leash#1
07-05 15:36:29.465 908 2933 I ActivityManager: START u0 {cmp=com.facebook.katana/.gdp.WebViewProxyAuth (has extras)} from uid 10262
07-05 15:36:29.467 665 665 D QCOM PowerHAL: LAUNCH HINT: ON
07-05 15:36:29.469 665 665 D QCOM PowerHAL: Activity launch hint handled
07-05 15:36:29.507 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token Android.os.BinderProxy@a7d9bb4
07-05 15:36:29.509 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory
07-05 15:36:29.509 29406 29406 E Instrumentation: Java.lang.Throwable
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.Instrumentation.getFactory(Instrumentation.Java:1224)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.Instrumentation.newActivity(Instrumentation.Java:1215)
07-05 15:36:29.509 29406 29406 E Instrumentation: at X.05O.newActivity(:3382)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2869)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3086)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Java:78)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.Java:108)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.Java:68)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1816)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.os.Handler.dispatchMessage(Handler.Java:106)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.os.Looper.loop(Looper.Java:193)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Android.app.ActivityThread.main(ActivityThread.Java:6718)
07-05 15:36:29.509 29406 29406 E Instrumentation: at Java.lang.reflect.Method.invoke(Native Method)
07-05 15:36:29.509 29406 29406 E Instrumentation: at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:493)
07-05 15:36:29.509 29406 29406 E Instrumentation: at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:858)
07-05 15:36:29.517 908 8581 I ActivityManager: START u0 {cmp=com.facebook.katana/.gdp.ProxyAuthDialog (has extras)} from uid 10262
07-05 15:36:29.519 665 665 D QCOM PowerHAL: LAUNCH HINT: ON
07-05 15:36:29.567 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token Android.os.BinderProxy@19959e4
07-05 15:36:29.569 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory
07-05 15:36:29.569 29406 29406 E Instrumentation: Java.lang.Throwable
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.Instrumentation.getFactory(Instrumentation.Java:1224)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.Instrumentation.newActivity(Instrumentation.Java:1215)
07-05 15:36:29.569 29406 29406 E Instrumentation: at X.05O.newActivity(:3382)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2869)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3086)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Java:78)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.Java:108)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.Java:68)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1816)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.os.Handler.dispatchMessage(Handler.Java:106)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.os.Looper.loop(Looper.Java:193)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Android.app.ActivityThread.main(ActivityThread.Java:6718)
07-05 15:36:29.569 29406 29406 E Instrumentation: at Java.lang.reflect.Method.invoke(Native Method)
07-05 15:36:29.569 29406 29406 E Instrumentation: at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:493)
07-05 15:36:29.569 29406 29406 E Instrumentation: at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:858)
07-05 15:36:29.651 492 540 D SurfaceFlinger: duplicate layer name: changing com.facebook.katana/com.facebook.katana.gdp.ProxyAuthDialog to com.facebook.katana/com.facebook.katana.gdp.ProxyAuthDialog#1
07-05 15:36:29.697 492 1763 D SurfaceFlinger: duplicate layer name: changing Dim Layer for - Task=2317 to Dim Layer for - Task=2317#1
07-05 15:36:29.720 665 665 D QCOM PowerHAL: LAUNCH HINT: OFF
07-05 15:36:29.731 492 540 W SurfaceFlinger: Attempting to set client state on removed layer: Dim Layer for - Task=2317#0
07-05 15:36:29.731 492 540 W SurfaceFlinger: Attempting to destroy on removed layer: Dim Layer for - Task=2317#0
NATIVE_WITH_FALLBACK
モードの使用に気付き、テストするためにWEB_ONLY
に変更しました。これにより、上記の元の問題を回避できますが、別の問題が発生します。ログインの詳細を尋ねる代わりに、次のように表示されます。
ここでも、テキストは次のとおりです。
以前にFacebookを使用して$ MY_APPにログインしました。続行しますか?
続行することを選択した場合(キャンセルする以外に選択肢はありません)、アプリに戻りますが、FirebaseからERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL
エラーが表示され、アカウントが既に別のプロバイダーに関連付けられていることが示されます。 Firebaseコンソールでチェックインすると、アカウントがFacebookのアカウントとして表示されます。つまり、Facebookアプリがインストールされていると、Firebaseはそれを別のソーシャルプロバイダーか何かだと考えさせます。
最後に、やむを得ず、認証モードをWEB_VIEW_ONLY
に切り替えてみました。案の定、これはFacebookをインストールせずにログインしたときとまったく同じエクスペリエンスを私に示しました。さらに、すべてが期待どおりに機能しました。
私の問題は、これらすべての影響が完全にわからないことです(注:以下の私の更新を参照してください)。ネイティブのFacebookログインについて、どこかで本当の意味でなくなったことをどこかで読んだことを覚えています(またはおそらくそれは反対であり、使用する必要があります)。基本的に、私は非常に混乱しており、以下の質問に対する回答をいただければ幸いです。
WEB_VIEW_ONLY
を使用しても問題ありませんか?NATIVE_WITH_FALLBACK
を使用すると、投稿の開始時にエラーが表示されるのですか?WEB_ONLY
が同じアカウントを別のプロバイダーとして扱うのはなぜですか?すべてのケースで 公式ドキュメント に従っていることに注意してください。最新のSDKバージョンの使用も含まれます。
implementation 'com.facebook.Android:facebook-login:[5,6)'
助けてくれてありがとう。
UPDATE:アプリをWEB_VIEW_ONLY
に更新して再送信しました。 Facebookは今私に言った:
現在、アプリはプラットフォームポリシー8.2に違反しています:ネイティブiOSおよびAndroid Facebookログインを実装するアプリは、ログイン用の公式SDKを使用する必要があります。アプリが最新バージョンのログイン用SDK。
だから今は岩と固い場所の間に立ち往生しています。
この問題の説明は次のとおりです。
07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue:サービス中の例外07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue:X.2LH:[コード] 404 [メッセージ]:キーハッシュGtvUdcOKFRAE0RY0LIw5veCA + M8 =格納されているどのキーハッシュとも一致しません。 (404)[追加]:null
facebookアプリケーションで構成するキーハッシュは、アプリケーションの署名に使用されるキーストア(証明書)に関連していることに注意してください。
アプリケーションの署名に使用するキーハッシュを使用する必要があります。わからない場合は、キーストアからもう一度取得することをお勧めします。
https://developers.facebook.com/docs/Android/getting-started/
FacebookログインSDKがこれらのモード間で非常に異なる動作をするのはなぜですか?私はそれらを、認証自体に影響を及ぼさない無害な設定であると考えましたが、まあ、私は間違っていました。
Webでは問題はありませんが、アプリケーション内にいる場合は、アプリケーションの使用を承認する必要があり、Androidアプリでのこの実装にとって非常に重要です、Facebook SDKを使用する必要があります。この場合、アプリケーションの署名に使用するキーハッシュ証明書を取得する必要があります。
ログの上部には、Key hash GtvUdcOKFRAE0RY0LIw5veCA+M8= does not match any stored key hashes.
リリース用にビルドするときに、おそらく間違ったキーハッシュを使用しています。どうやらこの問題は this link で説明されているように間違ったキーハッシュを使用したときに発生します。
なぜそれがWEBモードで機能するのかについては、キーハッシュがSDKによってチェックされ、代わりにWebページに移動するため、エラーは発生しません。デバッグモードで実行していて、デバッグモードのキーハッシュが正しい可能性があります。これは、デバイスで機能する理由の答えになる可能性があります。
ここでの答えの多くは解決策の一部を提供しますが、これは完全な解決策と説明であると思います。
あなたが直面している問題は、apkをビルドしたデバイスと一致しないHashKey値に関係しています。ビルドapkを実行する、使用しているコンピューター、mac、pcなどのハッシュキーは異なり、そのハッシュキーは最終的なapkビルドに統合されるため、別のコンピューターからビルドを実行している場合、Facebookログインは機能しません。
解決策は2つのことを行うことです。
まず、新しいコンピューターでapkビルドを作成するときは常に、HashKey文字列を生成して取得する必要があります。これを行うコードはここにあります:
public static String getMyHashKey(Context context, String packageName){
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
packageName, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance(SHA);
md.update(signature.toByteArray());
return Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
次に、設定でその文字列をFacebookアプリに追加する必要があります。これは、次の2つの手順に従って実行できます。
1) developers.facebook.com に移動し、問題のアプリに移動します。次に、[設定]-> [基本]をクリックします。
2)その後、下にスクロールしてAndroid領域に移動し、フィールドに入力します。複数のハッシュキーを使用できることに注意してください!
3)更新を保存し、更新が行われるまで数分待ってから、再試行します。それはあなたが直面している問題を解決するはずです。
あなたのログはキーハッシュが一致しないので、あなたはFacebookの開発者アカウントでキーハッシュを追加する必要があります私はコードの平和を共有しています関数はあなたがこの関数を呼び出してログを印刷するだけでよいので、あなたのキーハッシュを表示し、あなたのfb開発者アカウントでキーハッシュを更新するだけです..
public void generatekeyhash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(),
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) {
}
}