2012-08-08 71 views
3

我的Android应用程序中有facebook用户登录问题。我希望用户使用他们的Facebook帐户登录我的系统,但当我点击登录按钮时,Facebook本地应用程序启动,用户输入电子邮件和密码,然后原生应用程序关闭,我的应用程序再次启动。我不想使用本地应用程序进行此登录过程,我想打开Facebook登录弹出窗口,只有其他手机没有Facebook本地应用程序。如何禁用用户登录的Facebook本机应用程序

我怎样才能做到这一点? 感谢

编辑:

我使用的方法下面登录

protected void loginToFacebook() 
{ 


    if(!mFacebook.isSessionValid()) { 
     Toast.makeText(mActivity, "logining", Toast.LENGTH_SHORT).show(); 
     mFacebook.authorize(mActivity,permissions, new LoginDialogListener()); 
    } 
    else { 
     try { 
      JSONObject json = Util.parseJson(mFacebook.request("me")); 
      String facebookID = json.getString("id"); 
      String firstName = json.getString("first_name"); 
      String lastName = json.getString("last_name"); 
      String email = json.getString("email"); 
      Toast.makeText(mActivity, mFacebook.getAccessToken()+email+"-" + firstName + " " + lastName + ". No need to re-authorize.", Toast.LENGTH_SHORT).show(); 

      appState.mFbToken = mFacebook.getAccessToken(); 
      appState.mFbEmail = email; 
      mFacebookListener.onFacebookLoginSelected(); 

     } 
     catch(Exception error) { 
      Toast.makeText(mActivity, error.toString(), Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

收听响应

public final class LoginDialogListener implements DialogListener { 
    public void onComplete(Bundle values) { 
     try { 
      //The user has logged in, so now you can query and use their Facebook info 
      JSONObject json = Util.parseJson(mFacebook.request("me")); 
      String facebookID = json.getString("id"); 
      String firstName = json.getString("first_name"); 
      String lastName = json.getString("last_name"); 
      String email = json.getString("email"); 
      Toast.makeText(mActivity, mFacebook.getAccessToken() +email+"-" + firstName + " " + lastName + "!", Toast.LENGTH_SHORT).show(); 
      SessionStore.save(mFacebook, mActivity); 

      appState.mFbToken = mFacebook.getAccessToken(); 
      appState.mFbEmail = email; 
      mFacebookListener.onFacebookLoginSelected(); 


     } 
     catch(Exception error) { 
      Toast.makeText(mActivity, error.toString(), Toast.LENGTH_SHORT).show(); 
     } 
    } 

    public void onFacebookError(FacebookError error) { 
     Toast.makeText(mActivity, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show(); 
    } 

    public void onError(DialogError error) { 
     Toast.makeText(mActivity, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show(); 
    } 

    public void onCancel() { 
     Toast.makeText(mActivity, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show(); 
    } 
} 

如果本机应用程序开始我dialoglistenner不工作,但如果基于Web的登录弹出开始我的听众很好。

任何想法?

回答

6

请更新下面的应用程序代码。

mFacebook.authorize(mActivity, permissions, Facebook.FORCE_DIALOG_AUTH, 
      new LoginDialogListener()); 

代替

mFacebook.authorize(mActivity, permissions, new LoginDialogListener()); 

,看看下面的链接了解更多信息

Facebook Login Issue

+0

谢谢您的回答这对我的作品好。 – KAPLANDROID 2012-08-08 08:50:31

+0

我有一个混淆,我只使用Facebook的登录按钮的UI是可能的 – 2015-09-24 13:50:04

+0

我的意思是禁用Facebook登录按钮的功能。 – 2015-09-24 13:50:45

0

我敢肯定这是可能的,不幸的是我忘了怎么做。但据我记得,这个想法是,你应该强制登录对话框出现。如果我没有弄错,应该在对话框中设置一个布尔参数来强制显示它。

0

iOS和Android使用一种称为单点登录(SSO)的方式,这意味着任何尝试在第三方应用中使用Facebook的用户都将启动Facebook应用,以便于登录。如果用户安装了Facebook应用程序,它将始终启动应用程序进行登录 - 这是无法解决的。

这实际上是为了方便用户。用户通常会登录到应用程序,所以使用第三方FB应用程序只需要一次触摸/点击即可授权和使用。你会发现没有FB应用程序的用户会看到基于Web的登录页面。

0

请勿启用SSO。这应该可以解决您的问题。

相关问题