2013-05-27 43 views
0

我只是開始與Facebook API,所以如果我的問題很容易解決,請不要恨我問。 我正在開發一個登錄到FB的Android應用程序。我有FB的API設置就像在devFB教程。 一切工作很好,你按登錄按鈕和FB登錄屏幕出現彈出你可以登錄等 但當設備上有一個FBapp然後我的代碼重定向到這個應用程序進行授權,然後掛起什麼都不做,零,空值。Android的facebook - 登錄彈出不會出現

 Session.openActiveSession(this, true, new Session.StatusCallback() { 

     @Override 
     public void call(final Session session, SessionState state, Exception exception) { 
      // make request to the /me API 
      if (session.isOpened()) { 
       // make request to the /me API 
       Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

       // callback after Graph API response with user object 
        @Override 
        public void onCompleted(GraphUser user, Response response) { 
         if (user != null) { 
            TextView welcome = (TextView) findViewById(R.id.instructionsOrLink); 
            welcome.setText("Hello "+ user.getName() + "!"); 

它是教程代碼的副本。

任何建議如何防止這種情況?

回答

1

我使用此代碼,也許你應該嘗試一下:

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    openActiveSession(this, true, new Session.StatusCallback() { 

     // callback when session changes state 
     @Override 
     public void call(final Session session, SessionState state, Exception exception) { 

      if (session.isOpened()) { 

       // make request to the /me API 
       Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

        // callback after Graph API response with user object 
        @Override 
        public void onCompleted(GraphUser user, Response response) { 
         if (user != null) { 

          emailAddress = user.getProperty("email").toString(); 
          name = user.getName(); 
          fbId = user.getId(); 
          Communication.loginWithFb(FacebookLoginActivity.this, user.getId()); 

         } 
        } 
       }); 
      } else if (session.getState().equals(SessionState.CLOSED_LOGIN_FAILED)) { 

       Toast.makeText(FacebookLoginActivity.this, getResources().getString(R.string.login_with_facebook_error), Toast.LENGTH_LONG).show(); 
       finish(); 
      } 
     } 
    }, null); 
} 

private Session openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback, 
     List<String> permissions) { 
    OpenRequest openRequest = new OpenRequest(activity).setPermissions(permissions).setCallback(callback); 
    Session session = new Builder(activity).build(); 
    if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) { 
     Session.setActiveSession(session); 
     session.openForRead(openRequest); 
     return session; 
    } 
    return null; 
} 

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

@Override 
public void onDataDownloaded(CommunicationOutput<UserData> output) { 

    ... 
}