15

簡単なFacebookログインを設定しました。Android 2.3.6 の場合、すべてが正常に機能し、ユーザーはプロンプト ログイン ダイアログを取得し、データを入力してアプリを続行します。Android版のせいかと思ったら、携帯電話にfacebookアプリをインストールしているのにログインできないことが判明!

これをテストしました: Galaxy Ace 2.3.6 HTC Desire 4.1.2 Galaxy Note 4.1.2 Android emulator 4.1.2

Facebookのサンプルでさえ機能していません!

アプリが実行されるたびに -else { Log.d("SESSION NOT OPENED", "SESSION NOT OPENED"); }

セッションが開かれていないように見えますが、それはなぜですか? このガイドに従いました - https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/

コード:

Session.openActiveSession(this, true, new Session.StatusCallback() {

        @Override
        public void call(final Session session, SessionState state, Exception exception) {

            if (session.isOpened()) {

                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (user != null) {
                            Log.d("Access_token", session.getAccessToken());
                        }
                    }
                });
            } else {
                Log.d("SESSION NOT OPENED", "SESSION NOT OPENED");
            }
        }
    });
4

7 に答える 7

14

私は使用している人のためにこの答えを書いていますFacebook SDK 4.X

次の 2 つの方法のいずれかで、Facebook のログイン ポータルを開くことができます。

  1. ここでメソッドと呼ばれるデバイスにインストールされAndroid 1.9.XているAndroidデバイスを持っている場合、facebookを使用する必要はありませんFacebook AppNative LoginWebView

  2. Facebook AppAndroidデバイスにインストールしていない場合は、使用することをお勧めしますWebView

したがって、この Facebook には 3 を指定しますConstants

  1. NATIVE_ONLY(Facebookアプリのみで開きたい場合に使用)
  2. WEB_ONLY(だけで開きたい場合に使用WebView
  3. NATIVE_WITH_FALLBACKwebView(アプリがインストールされていない場合は、Facebook が検出して開くことをお勧めします)

詳細については、以下のリンクを確認して ください https://developers.facebook.com/docs/reference/android/current/class/LoginButton/ https://developers.facebook.com/docs/facebook-login/android/v2.2#troubleshooting

     LoginButton.setLoginBehavior(LoginBehavior.NATIVE_WITH_FALLBACK);
     LoginButton.setLoginBehavior(LoginBehavior.NATIVE_ONLY);
     LoginButton.setLoginBehavior(LoginBehavior.WEB_ONLY);
于 2015-08-18T08:12:43.680 に答える
6

この関数を使用して両方 (デバッグと apk のリリース) にハッシュ キーを取得し、developer.facebook.com/apps のアプリに配置します。

private void calculateHashKey(String yourPackageName) {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                yourPackageName,
                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 (NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
}

これは私を大いに助けます..これもあなたを助けることを願っています..

于 2014-04-29T10:45:57.007 に答える
1

Facebook の Login Quickstart for Android の下部に重要なステップがあります。

Android 11 以降の場合、アプリqueriesには、知りたいすべてのアプリのエントリが必要です。これがないと、アプリは Facebook がインストールされていることを認識せず、常にカスタム Chrome タブを開きます。

クエリにエントリを追加com.facebook.katanaします。AndroidManifest.xml

<queries>
  <package android:name="com.facebook.katana" />
</queries> 

参考までに、私はFB SDK 5.6を使用しています

于 2021-08-26T03:22:15.847 に答える