我正在嘗試使用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的原因是因爲它只在用戶已經給你基本(默認)權限的情況下才起作用。 –