2014-06-27 145 views
2

在我的應用程序中,我有一個要求,無需登錄按鈕即可登錄Facebook。我試過下面的代碼片段在本機對話框中使用Facebook登錄而不使用Facebook登錄按鈕

Session s = new Session(activity); 
    Session.setActiveSession(s); 
    Session.OpenRequest request = new Session.OpenRequest(activity); 
    request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO); 
    request.setCallback(new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      if (exception != null) { 
       Toast.makeText(activity, "Facebook" + exception.getMessage(), Toast.LENGTH_SHORT).show(); 
       closeTask = true; 
      } 
      else if(session.getState().isOpened()){} 
     } 
    }); 

但它打開網頁對話框。我的要求是打開本地對話框,如果Facebook應用程序安裝。如果未安裝Facebook應用程序,請打開網頁對話框。

感謝, 馬尼什加爾格

回答

1

您應該刪除這一行:

request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO); 

它告訴SDK來抑制SSO(這是原生的對話框)。

+0

Hi Ming,我已經使用了SUPRESS_SSO,因爲我也在使用Session.getActiveSession()來做facebook loogout。closeAndClearTokenInformation();.註銷後,當我再次嘗試登錄而不使用SUPRESS_SSO時,應用程序不會詢問用戶憑據。 – Manish

+0

「不要求用戶憑證」是什麼意思?它只是給你一個訪問令牌嗎? –

+0

假設用戶執行以下操作:1. Facebook應用程序未登錄並且第一次通過應用程序進行用戶登錄,它也登錄到facebook應用程序(表現爲單點登錄)。 2.用戶註銷Facebook使用我的應用程序,closeAndClearTokenInformation僅關閉應用程序的會話。 3.用戶再次嘗試使用我的應用程序登錄Facebook,因爲Facebook應用程序已經登錄,只有應用程序會話關閉,facebook api不會詢問用戶憑證並打開會話。 – Manish

相關問題