2013-04-23 27 views
2

Im適用於Android的非常簡單的應用程序。它應該很快就會上市。我必須登錄Facebook,但似乎Facebook應用程序拒絕我的應用程序登錄。我不能只卸載Facebook應用程序,因爲它會在Google Play上幾周,當然我也不能要求用戶卸載他們的Facebook應用程序。如果我已安裝Facebook應用程序,我的Android應用程序用於Facebook登錄不會打開會話

private void goFacebookLogin(){ 
     Session.openActiveSession(this, true, new Session.StatusCallback() { 
      @Override 
      public void call(Session session, SessionState state, Exception exception) { 
       if (session.isOpened()){ 
        Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 
         @Override 
         public void onCompleted(GraphUser user, Response response) { 
          if (user != null){ 
           fbButton.setVisibility(Button.VISIBLE); 
          } 

         } 
        }); 
       }else{ 
        Toast.makeText(getApplicationContext(), "session is not opened", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 



@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 

這是我使用的代碼。 因此......如何在不卸載Facebook應用程序的情況下使用我的Facebook應用程序登錄?

+0

當你說「拒絕我的應用登錄」時,你看到的確切錯誤是什麼?截圖或logcat輸出會有所幫助。 – 2013-04-24 17:02:40

回答

2

Facebook應用程序不應該干擾您的應用程序登錄到Facebook。事實上,如果用戶安裝了最新的Facebook Android應用程序,它將提供有用的本機對話框。試試這個代碼登錄到Facebook的:

Session session = Session.getActiveSession(); 
if (!session.isOpened() && !session.isClosed()){ 
    session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback); 
}else{ 
    session.openActiveSession(this, true, statusCallback); 
} 

其中statusCallback是:

private Session.StatusCallback statusCallback = new SessionStatusCallback(); 

而且內部類SessionStatusCallback被定義爲:

protected class SessionStatusCallback implements Session.StatusCallback { 

    @Override 
    public void call(Session session, SessionState state, Exception exception) { 
     if (session.isOpened() && session != null){ 
      sessionChangedCallback(); 
     } 
    } 
}//end of SessionStatusCallback class 

方法sessionChangedCallback()是希望在sessionstate更改時放置代碼。讓你的onActivityResult()代碼相同。最後,請記住將它放在清單文件中:

<activity 
     android:name="com.facebook.LoginActivity" > 
    </activity> 
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" /> 

試試看該代碼是否有效。就像我之前說的,安裝Facebook應用程序不應該干擾您的應用程序登錄Facebook的能力。

+0

sessionChangedCallback()指向我的常規登錄嗎? – chntgomez 2013-04-24 01:08:41

+0

我很害怕這並沒有解決問題。 – chntgomez 2013-04-24 14:16:56

+0

有沒有人解決這個問題。我也面臨同樣的問題 – Sunny 2013-04-26 11:23:44

相關問題