web-dev-qa-db-ja.com

モードによって、Facebook認証SDKの動作が大きく異なるのはなぜですか?

Androidアプリがあります。バックエンドでFirebaseを使用し、Facebook(およびGoogle)経由でソーシャルログインを提供します。

最近Facebookから連絡があり、Facebook経由でログインしたときにアプリがクラッシュする/応答しないという警告が表示されました。混乱して、私はいくつかのテストに乗り出しました。

私が見つけたのは、FacebookアプリをインストールせずにFacebookログインを使用すると、すべてが完全に機能することです。ユーザーにブラウザウィンドウが表示され、ログインできるようになり、ユーザーは私のアプリにリダイレクトされ、身元がわかります。もちろん、私は開発中にこれをすべて見つけましたが、物事がまだ機能していることを確認したかっただけです。

しかし、Facebookアプリ(開発中に無視したこと)をインストールしたところ、機能しなくなったことがわかりました。代わりに、ユーザーはこのページにリダイレクトされます。

enter image description here

検索とアクセシビリティについては、この画像のテキストは次のようになります。

ログインエラー:このアプリケーションへのログイン中にエラーが発生しました。後でもう一度やり直してください。

これが発生したときにログを確認したところ、次のが関連している可能性があることがわかりましたが、実際にはわかりません。

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に変更しました。これにより、上記の元の問題を回避できますが、別の問題が発生します。ログインの詳細を尋ねる代わりに、次のように表示されます。

enter image description here

ここでも、テキストは次のとおりです。

以前に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が同じアカウントを別のプロバイダーとして扱うのはなぜですか?
  • FacebookログインSDKがこれらのモード間で非常に異なる動作をするのはなぜですか?私はそれらを、認証自体に影響を与えない無害なpreferenceであると考えましたが、まあ、私は間違っていました。

すべてのケースで 公式ドキュメント に従っていることに注意してください。最新のSDKバージョンの使用も含まれます。

implementation 'com.facebook.Android:facebook-login:[5,6)'

助けてくれてありがとう。

UPDATE:アプリをWEB_VIEW_ONLYに更新して再送信しました。 Facebookは今私に言った:

現在、アプリはプラットフォームポリシー8.2に違反しています:ネイティブiOSおよびAndroid Facebookログインを実装するアプリは、ログイン用の公式SDKを使用する必要があります。アプリが最新バージョンのログイン用SDK。

だから今は岩と固い場所の間に立ち往生しています。

22
me--

この問題の説明は次のとおりです。

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アプリケーションで構成するキーハッシュは、アプリケーションの署名に使用されるキーストア(証明書)に関連していることに注意してください。

enter image description here

アプリケーションの署名に使用するキーハッシュを使用する必要があります。わからない場合は、キーストアからもう一度取得することをお勧めします。

https://developers.facebook.com/docs/Android/getting-started/

FacebookログインSDKがこれらのモード間で非常に異なる動作をするのはなぜですか?私はそれらを、認証自体に影響を及ぼさない無害な設定であると考えましたが、まあ、私は間違っていました。

Webでは問題はありませんが、アプリケーション内にいる場合は、アプリケーションの使用を承認する必要があり、Androidアプリでのこの実装にとって非常に重要です、Facebook SDKを使用する必要があります。この場合、アプリケーションの署名に使用するキーハッシュ証明書を取得する必要があります。

4
Jorgesys

ログの上部には、
Key hash GtvUdcOKFRAE0RY0LIw5veCA+M8= does not match any stored key hashes.

リリース用にビルドするときに、おそらく間違ったキーハッシュを使用しています。どうやらこの問題は this link で説明されているように間違ったキーハッシュを使用したときに発生します。

なぜそれがWEBモードで機能するのかについては、キーハッシュがSDKによってチェックされ、代わりにWebページに移動するため、エラーは発生しません。デバッグモードで実行していて、デバッグモードのキーハッシュが正しい可能性があります。これは、デバイスで機能する理由の答えになる可能性があります。

0
Zohaib Amir

ここでの答えの多くは解決策の一部を提供しますが、これは完全な解決策と説明であると思います。

あなたが直面している問題は、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 に移動し、問題のアプリに移動します。次に、[設定]-> [基本]をクリックします。 enter image description here

2)その後、下にスクロールしてAndroid領域に移動し、フィールドに入力します。複数のハッシュキーを使用できることに注意してください!

enter image description here

3)更新を保存し、更新が行われるまで数分待ってから、再試行します。それはあなたが直面している問題を解決するはずです。

0
PGMacDesign

あなたのログはキーハッシュが一致しないので、あなたは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) {

    }
}
0
Hitesh Kushwah

問題を解決するには、ログインDeveloper Accout>Facebookアプリ>Settingsここで、アプリケーションhashkey hashesフィールドに貼り付け、構成を保存します。アプリケーションを実行すると、エラーが発生しなくなります。

Screenshot

アプリケーションの設定に役立つスクリーンショットを見つけることができます。

0
Kiran Maniya