2013-02-02 89 views
0

現在我與Android的Facebook integration.But註銷工作是不工作的this.without註銷從我的瀏覽器的手機,我無法從我的application.why註銷出現這種情況?。怎麼能我們避免這種Android的Facebook的註銷工作不

回答

0

有兩個獨立的事情怎麼回事:
1)您的用戶是否已經驗證您的應用程序(使用權限)Facebook和
2)你的用戶是否登錄Facebook。

需要驗證您的用戶使用你的應用程序,並一直持續到用戶明確取消認證第一時間(例如,通過Facebook的網絡帳戶設置 - >應用程序 - >應用程序設置)。

登錄可在每次用戶啓動您的應用程序所需的時間。但是,如果您使用默認的SDK authorize(),它會嘗試執行單點登錄(SSO),如果Facebook應用程序已登錄,則您的應用程序會自動登錄並使用現有的訪問令牌。

如果您正在使用SSO,當你做一個退出,有沒有效果,作爲一個真正的註銷將不得不註銷Facebook的應用程序 - 該用戶可能不喜歡!

你可以做形式

authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener()); 

避免了單點登錄和強制對話框登錄的授權得到解決此問題。當然,這會迫使你的用戶在每次啓動你的應用程序時登錄 - 除非你在 封面(這是SDK所做的 - 檢查源代碼)下保存登錄詳細信息/訪問令牌。

編輯:

m_facebook.authorize(FacebookActivity.this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, 
      new LoginDialogListener()); 

class LoginDialogListener implements DialogListener 
{ 
    public void onComplete(Bundle p_values) 
    { 
     saveCredentials(m_facebook); 
     if (m_messageToPost != null) 
     { 
      postToWall(m_messageToPost); 
     } 
    }  
    public void onFacebookError(FacebookError p_error) 
    { 
     finish(); 
    }  
    public void onError(DialogError p_error) 
    { 
     finish(); 
    }  
    public void onCancel() 
    { 
     finish(); 
    } 
} 
+0

什麼是 「FORCE_DIALOG_AUTH」,其他所有參數被替換,但沒有FORCE_DIALOG_AUTH的想法這幫助我。 – jithu

+0

我的觀點是,如果您使用的是SSO,isSessionValid不會告訴您有關底層登錄狀態的任何信息。爲什麼不嘗試使用FORCE_DIALOG_AUTH形式的授權並查看會發生什麼? – GrIsHu

+0

facebook.authorize( \t \t \t \t \t此, \t \t \t \t \t新的String [] { 「read_stream,publish_stream,offline_access,friends_about_me,user_birthday」}, - 1, \t \t \t \t \t新DialogListener() { \t \t \t \t \t \t公共無效的onComplete(束值){ \t \t \t \t \t \t \t Facebook.access_token = facebook.getAccessToken(); \t \t \t \t \t \t \t getMyInfo(); \t \t \t \t \t \t} – jithu