Android 在执行facebook post功能时,某些代码行未被执行
伙计们,我想用facebook sdk在facebook上发布,但有些代码没有执行。是弹出一个登录对话框,当我登录时,Android 在执行facebook post功能时,某些代码行未被执行,android,facebook-android-sdk,Android,Facebook Android Sdk,伙计们,我想用facebook sdk在facebook上发布,但有些代码没有执行。是弹出一个登录对话框,当我登录时,SessionEvents.AuthListener侦听器应侦听登录成功。但这不是在听。每次启动应用程序时,它都要求登录。 下面是我的代码 public class FacebookConnector { private Facebook mFacebook; private AuthListener mSessionListener; private Context conte
SessionEvents.AuthListener侦听器应侦听登录成功。但这不是在听。每次启动应用程序时,它都要求登录。
下面是我的代码
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
方法中,不知道为什么将此权限设置为public
private String[] PERMISSIONS = new String[]
{ "publish_stream", "read_stream", "offline_access" };
这将检查会话是否存在,如果存在,则它将直接更新,如果不存在,则请求用户允许在墙上更新。嗨,朋友们,我得到了解决方案,解决了我的问题,所以现在发布答案。我只需要覆盖ActivityResult上的
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFacebook.authorizeCallback(requestCode, resultCode, data);
}
我刚刚添加了它,让我的应用程序正常运行。甚至连LoginDialGlistener的方法都没有被调用。您使用的SDK版本是什么?我建议您转到3.0版本。