我已經在我的應用中實施了Facebook連接,就像Facebook提供的示例應用一樣,它運行良好。用戶選擇通過Facebook共享數據後,他們將進入新視圖並顯示FB登錄對話框。當用戶完成後,他們退出FB共享視圖並返回到我的應用的以前的視圖。只要用戶不註銷,即使他們退出FB共享視圖,用戶仍會保持登錄狀態。這很好,和預期的一樣。更改視圖後,iPhone Facebook連接註銷崩潰
我使用相同viewDidLoad方法作爲樣品SessionViewController.m,而這正是_session被初始化:
- (void)viewDidLoad {
[_session resume];
_loginButton.style = FBLoginButtonStyleWide;
}
但是我注意到,如果用戶退出和重新之後按下退出按鈕加載FB共享視圖,它會拋出SIGABRT或EXC_BAD_ACCESS並導致應用程序崩潰。在登錄按鈕的touchUpInside方法[對話框顯示]行中出現的錯誤EXC_BAD_ACCESS:
- (void)touchUpInside {
if (_session.isConnected) {
[_session logout];
} else {
FBLoginDialog* dialog = [[[FBLoginDialog alloc] initWithSession:_session] autorelease];
[dialog show];
}
即使用戶所連接的touchUpInside方法是看到已斷開的會話。有時候,而不是按下退出後崩潰按鈕註銷將會成功,但視圖的狀態文本保持「以...登錄」,並且設置的狀態/上傳圖像按鈕不會隱藏。嘗試再次登錄拋出一個SIGABRT,看起來由於FBRequest.m一零_session.sessionKey:344:
[_params setObject:_session.sessionKey forKey:@"session_key"];
有什麼我應該保留或跨越視圖的變化做不同?
編輯:我發現有關於Facebook的開發者論壇同樣的問題其他用戶: http://forum.developers.facebook.com/viewtopic.php?pid=193727#p193727
有沒有解決辦法,但張貼如果我找到一個我會更新這個問題。
它肯定看起來像你正在做的一切正確。你可以在FBDialog類中設置斷點(只是在每個函數中),看看你是否可以縮小它崩潰的地方?將它放入FBDialog :: show()方法中嗎? – justin 2010-01-06 18:46:57