2012-08-08 109 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。這應該可以解決您的問題。

相關問題