1

Facebook SDKを使用してFacebookに投稿したいのですが、一部のコード行が実行されていません。ログインするときにログイン用のダイアログがポップアップ表示され、SessionEvents.AuthListener listenerログインの成功をリッスンする必要があります。しかし、それは聞いていません。アプリを起動するたびに、ログインを要求します。
以下は私のコードです。

public class FacebookConnector {
private Facebook mFacebook;
private AuthListener mSessionListener;
private Context context;
private String[] permissions;
private Activity activity;

public FacebookConnector(String appId, Activity activity, Context context, String[] permissions) {

    this.mFacebook = new Facebook(appId);
    SessionStore.restore(mFacebook, context);
    SessionEvents.addAuthListener(mSessionListener);
    SessionEvents.addLogoutListener((LogoutListener) mSessionListener);
    this.context = context;
    this.permissions = permissions;
    this.activity = activity;

}

public void postMessageOnWall(String msg) {
    if (mFacebook.isSessionValid()) {
        Bundle parameters = new Bundle();
        parameters.putString("message", msg);
        try {
            String response = mFacebook.request("me/feed", parameters, "POST");
            System.out.println(response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        login();
    }
}

public void login() {
    if (!mFacebook.isSessionValid()) {
        mFacebook.authorize(this.activity, this.permissions, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
    }
}

public Facebook getFacebook() {
    return mFacebook;
}
}

そして私の活動クラスで....

private void onFacebookBtnClicked() {
    if (facebookConnector.getFacebook().isSessionValid()) {
        postMessageInThread();
    } else {
        SessionEvents.AuthListener listener = new SessionEvents.AuthListener() {
            @Override
            public void onAuthSucceed() {
                postMessageInThread();
            }

            @Override
            public void onAuthFail(String error) {

            }
        };
        SessionEvents.addAuthListener(listener);
        facebookConnector.login();
    }
}
private void postMessageInThread() {
    Thread t = new Thread() {
        public void run() {
            try {
                facebookConnector.postMessageOnWall(mQuote.getQuoteText() + "\n" + mQuote.getAuthorName());
                mFacebookHandler.post(mUpdateFacebookNotification);
            } catch (Exception ex) {
                Log.e("Facebook", "Error sending msg", ex);
            }
        }
    };
    t.start();
}

final Runnable mUpdateFacebookNotification = new Runnable() {
    public void run() {
        Toast.makeText(getBaseContext(), "Facebook updated !", Toast.LENGTH_LONG).show();
    }
};

そのpostMessageInThreadメソッドが実行されていない、理由がわからない

4

2 に答える 2

1

こんにちは友人私は私の問題の解決策を得たので、今答えを投稿します。私はちょうどオーバーライドしなければならなかったonActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    mFacebook.authorizeCallback(requestCode, resultCode, data);
}

追加したところ、アプリが正しく動作しました。

于 2013-05-06T15:36:57.917 に答える
1

この権限をパブリックとして設定します

private String[] PERMISSIONS = new String[]

    { "publish_stream", "read_stream", "offline_access" };

これは、セッションが存在するかどうかを確認し、存在する場合は直接更新し、ウォールで更新する許可をユーザーに求めます。

于 2013-05-06T06:21:18.833 に答える