1

Facebookのコメントを投稿するためにFacebookのログインが必要なAndroidアプリを開発しています。ただし、ログインに行き詰まりました。したがって、https: //developers.facebook.com/docs/tutorials/androidsdk/3.0/scrumptious/authenticate/ のチュートリアルに従いましたが、state.isCloced() == true を取得していますログイン後(Facebookのログインボタンでも、ログアウトするテキストは変更されません)。機能しない理由はわかりません。誰でも私を助けることができますか?

チュートリアルを参照すると、フラグメントがあります:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<com.facebook.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginBottom="30dp"
    android:layout_marginTop="30dp" />
</LinearLayout>

そして私の MainActivity で:

    private UiLifecycleHelper uiHelper;
private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state, Exception exception)                 {
        onSessionStateChange(session, state, exception);
    }
};

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    uiHelper = new UiLifecycleHelper(this, callback);
    uiHelper.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
}



private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        Log.i("FacebookFragment", "State is opened");
    } else if (state.isClosed()) {
        Log.i("FacebookFragment", "State is closed");
    }
}

@Override
public void onResume() {
    super.onResume();
    uiHelper.onResume();
}

@Override
public void onPause() {
    super.onPause();
    uiHelper.onPause();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}

LoginButton をクリックすると、fb パーミッション ダイアログが表示されます。[OK] をクリックすると、丸いプログレス バーが表示され、ログイン ボタンが再び表示されます。LogCat ではまだ State is closed :(

私は何か間違ったことをしていますか?それとも、loginButton を含む Fragment が別のフラグメントにネストされているためでしょうか?

Android 4、ネイティブ FB アプリがインストールされたデバイスでテストしています。

ありがとう :)

4

2 に答える 2

4

「remote_app_idが保存されたIDと一致しません」という例外に基づいて解決しました。答えはhttps://stackoverflow.com/a/14421260/1618316で、FacebookアプリIDが印刷されています。まず、fb チュートリアルのコマンドでアプリ ID を生成しましたが、上記の回答で出力されたものとは異なりました。だから私はfbに新しいキーを入れて、今は動作します。

しかし、チュートリアルのコマンドで間違ったハッシュが返された可能性があるのではないかと思います:/

于 2013-03-09T12:14:04.527 に答える
0

フラグメント内で LoginButton を使用している場合は、それを含むフラグメントから loginButton.setFragment を呼び出し、そのフラグメント内の onActivityResult メソッドもオーバーライドする必要があります。

ここのチュートリアルを参照してください https://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with-facebook/

于 2013-03-06T19:51:54.927 に答える