2013-05-06 61 views
1

傢伙我想發佈在Facebook上,爲使用Facebook的SDK,但一些代碼行不執行。彈出登錄對話框,當我登錄時,然後SessionEvents.AuthListener listener應該聽取登錄成功。但它不聽。每次當我開始應用程序,它要求登錄。
下面是我的代碼。某些代碼行沒有得到執行,當做Facebook的發佈功能

public class FacebookConnector { 
private Facebook mFacebook; 
private AuthListener mSessionListener; 
private Context context; 
private String[] permissions; 
private Activity activity; 

public FacebookConnector(String appId, Activity activity, Context context, String[] permissions) { 

    this.mFacebook = new Facebook(appId); 
    SessionStore.restore(mFacebook, context); 
    SessionEvents.addAuthListener(mSessionListener); 
    SessionEvents.addLogoutListener((LogoutListener) mSessionListener); 
    this.context = context; 
    this.permissions = permissions; 
    this.activity = activity; 

} 

public void postMessageOnWall(String msg) { 
    if (mFacebook.isSessionValid()) { 
     Bundle parameters = new Bundle(); 
     parameters.putString("message", msg); 
     try { 
      String response = mFacebook.request("me/feed", parameters, "POST"); 
      System.out.println(response); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } else { 
     login(); 
    } 
} 

public void login() { 
    if (!mFacebook.isSessionValid()) { 
     mFacebook.authorize(this.activity, this.permissions, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener()); 
    } 
} 

public Facebook getFacebook() { 
    return mFacebook; 
} 
} 

,並在我的活動類....

private void onFacebookBtnClicked() { 
    if (facebookConnector.getFacebook().isSessionValid()) { 
     postMessageInThread(); 
    } else { 
     SessionEvents.AuthListener listener = new SessionEvents.AuthListener() { 
      @Override 
      public void onAuthSucceed() { 
       postMessageInThread(); 
      } 

      @Override 
      public void onAuthFail(String error) { 

      } 
     }; 
     SessionEvents.addAuthListener(listener); 
     facebookConnector.login(); 
    } 
} 
private void postMessageInThread() { 
    Thread t = new Thread() { 
     public void run() { 
      try { 
       facebookConnector.postMessageOnWall(mQuote.getQuoteText() + "\n" + mQuote.getAuthorName()); 
       mFacebookHandler.post(mUpdateFacebookNotification); 
      } catch (Exception ex) { 
       Log.e("Facebook", "Error sending msg", ex); 
      } 
     } 
    }; 
    t.start(); 
} 

final Runnable mUpdateFacebookNotification = new Runnable() { 
    public void run() { 
     Toast.makeText(getBaseContext(), "Facebook updated !", Toast.LENGTH_LONG).show(); 
    } 
}; 
postMessageInThread方法

不執行,不知道爲什麼

+0

您使用的是哪個版本的SDK?我建議你轉到3.0版本。 – 5agado 2013-05-06 15:48:00

回答

1

設置此權限公共

private String[] PERMISSIONS = new String[] 

    { "publish_stream", "read_stream", "offline_access" }; 

這將檢查會話是否存在,如果是,那麼它將直接更新,如果沒有,則請求用戶許可給你更新在牆上。

+0

我通過添加這些權限進行檢查,但仍然無法正常工作 – Raja 2013-05-06 06:32:33

+0

即使沒有任何LoginDialogListener的方法被調用 – Raja 2013-05-06 07:31:54

1

嗨,朋友,我得到了解決方案,爲我的問題,所以現在發佈答案。我不得不重寫onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    mFacebook.authorizeCallback(requestCode, resultCode, data); 
} 

我只是增加了它,並得到了我的應用程序正常工作。