1

伙计们,我想在 facebook 上发布,为此使用 facebook sdk,但是某些代码行没有执行。是弹出一个登录对话框,当我登录时,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

Hi friends i got the solution, for my problem, so now posting the answer. i just had to overrideonActivityResult

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

i just added it and got my app working correctly.

于 2013-05-06T15:36:57.917 回答
1

将此权限设置为公开

private String[] PERMISSIONS = new String[]

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

如果是,这将检查会话是否存在,如果不存在,它将直接更新,然后询问用户是否允许在墙上更新。

于 2013-05-06T06:21:18.833 回答