我正在尝试使用sdk 3.0在Facebook
上发布图像,但我遇到了一些问题。如果我关闭应用程序并重新打开应用程序,它总是处于其他状态,然后在有条件的情况下进入。我需要保存session
还是已经存储?有时无法上传照片在脸书3.0?
Session mSession = Session.getActiveSession();
if (mSession != null
&& mSession.getPermissions().contains("publish_actions")) {
postPhoto();
} else {
if (mSession == null) {
Log.d("Facebook", "Session null");
mSession = new Session.Builder(this).setApplicationId(
"xxxxxxxxxxxxxxx").build();
Session.setActiveSession(mSession);
}
if (!mSession.isOpened()) {
Log.d("Facebook", "Session not opened");
Session.OpenRequest sessionRequest = new Session.OpenRequest(
this);
sessionRequest.setPermissions(PERMISSIONS);
sessionRequest.setCallback(statuscallback);
sessionRequest
.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
mSession.openForPublish(sessionRequest);
}
}
StatusCallback statuscallback = new StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
// TODO Auto-generated method stub
if (session.isOpened()) {
Log.d("Facebook", "Logged in");
postPhoto();
}
if (session.isClosed()) {
Log.d("Facebook", "Logged out");
}
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
Log.d("Facebook", "onActivity Result");
}
如果我需要注销用户?
我尝试以下代码的onDestroy()
if (mSession.isOpened())
mSession.closeAndClearTokenInformation();
每当我打开如果使用上面的代码中破坏方法它总是在这条线会引发错误的应用程序下一次
mSession.openForPublish(sessionRequest);
请帮助家伙。答案/建议将非常可观。
感谢
你能通过代码显示我吗?想要发布照片,那么为什么需要'openForRead'而不是'openForPublish' – ronie
SDK附带的示例应用程序是如何使用UiLifecycleHelper以及Scrumptious应用程序(在SelectionFragment.java中)的最佳示例,其中包含示例关于如何请求发布权限。 –
你不应该直接调用openForPublish的原因是因为它只在用户已经给你基本(默认)权限的情况下才起作用。 –