2014-06-27 93 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

相关问题