2012-09-26 22 views

回答

0

該對話框僅爲用戶登錄到Facebook創建。一旦完成後,它將返回到原來的活動。這就是你要求的權利?

可以說你想發佈消息給Facebook。

try { 
     Log.d(TAG, "postToFaceBook()"); 
     if (facebook == null) { 
      facebook = new Facebook(API); 
      String access_token = prefs.getFBAccesTocken(); 

      long expires = prefs.getFBExpiry(); 
      if (access_token != null) { 
       facebook.setAccessToken(access_token); 
      } 
      if (expires != 0) { 
       facebook.setAccessExpires(expires); 
      } 
     } 

     if (facebook.isSessionValid()) { 
      Log.d(TAG, "Session is valid"); 
      facebook.extendAccessTokenIfNeeded(this, null); 
      postToFacebook(); 
     } else { 
      Log.d(TAG, "not valid"); 
      // Using SSO OAuth 
      // facebook.authorize(this, new String[] { "publish_stream" 
      // },new LoginDialogListener()); 

      // Not using SSO 
      facebook.authorize(this, new String[] { "publish_stream" }, 
        Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener()); 
     } 
    } catch (NullPointerException e) { 
     Log.e(TAG, "An error occurd trying to open facebook app"); 

如果用戶已經登錄到Facebook在過去,有一個有效的會話,它只會發佈到Facebook上,如果沒有一個有效的會話,將打開的對話框,並嘗試登錄。

LoginDialogListener()響應此響應。

public class LoginDialogListener extends BaseDialogListener { 

    @Override 
    public void onComplete(Bundle values) { 
     Log.d(TAG, "Login response recieved"); 
     prefs.saveToken(facebook.getAccessToken()); 
     prefs.saveExpiry(facebook.getAccessExpires()); 
     facebook.extendAccessTokenIfNeeded(MyActivity.this, null); 
     Log.d(TAG, "Logged in "); 
     postToFacebook(); 
    } 

} 

另一種選擇是使用SSO(我已經在示例代碼中註釋掉了)。

+0

感謝Danwms 其實我是新來的android。在哪裏使用這個代碼?在onComplete方法?的facebook登錄對話框。我已經開始在onCompleted方法中使用意圖進行新的活動,並且當我點擊後退按鈕時,我想去登錄對話框和其他目的而不是主要活動。 – Nadeem