Android Facebook ..如何获得AccessToken

时间:2011-05-06 14:37:17

标签: android facebook

您好我正在尝试添加Facebook连接到我的Android应用程序,我确实设法在我的墙上发布应用程序,但当我下载Android Facebook应用程序并登录它但现在我不能发布在我的墙上。我收到了这个错误:

{"error":{"type":"OAuthException","message":"An active access token 
must be used to query information about the current user."}}

CODE:

公共类FacebookLogin扩展了活动{

private static final String APP_API_ID = "080808998-myappId";
Facebook facebook = new Facebook(APP_API_ID);
private AsyncFacebookRunner mAsyncRunner;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);    

    mAsyncRunner = new AsyncFacebookRunner(facebook);

    SessionStore.restore(facebook, this);
    SessionEvents.addAuthListener(new SampleAuthListener());
    Log.i("Error", facebook.getAccessToken()+"tokenId");
    facebook.dialog(FacebookLogin.this, "feed", new SampleDialogListener());

}

public void postOnWall(String msg) {
    try {
           Bundle bundle = new Bundle();
           bundle.putString("message", msg);
           bundle.putString("from", "fromMe");
           bundle.putString("link","facebook.com");
           bundle.putString("name","name of the link facebook");
           bundle.putString("description","some description here");

           //bundle.putString(Facebook.TOKEN, accessToken);

           bundle.putString("picture", "http://url to image");
           String response = facebook.request("me/feed",bundle,"POST");

           Log.d("Error", "got response: " + response);
           if (response == null || response.equals("") || 
                   response.equals("false")) {
              Log.v("Error", "Blank response");
           }
    } catch(Exception e) {
        e.printStackTrace();
    }

} }

我得到的令牌是空的。

1 个答案:

答案 0 :(得分:2)

您没有检查会话是否有效 如果没有,那么你必须授权。

您还必须首次登录Facebook才能使用您的应用并授予该应用的权限。

然后您将第一次获得访问令牌。

然后你应该存储你的会话,当再次使用该应用程序时,你不会得到这个错误。

为此,请查看来自Facebook_Android_SDK的示例应用程序LoginButton.java init()方法

注意:在sharedPreferences中存储一个布尔标志,以指示这是否是第一次,
因此,每次使用该应用程序时都不会弹出登录对话框。