【问题标题】:Android Facebook .. how to get AccessTokenAndroid Facebook .. 如何获取 AccessToken
【发布时间】:2012-12-17 22:52:59
【问题描述】:

您好,我正在尝试将 facebook 连接添加到我的 Android 应用程序,我确实设法使用应用程序在我的墙上发帖,但是当我下载 android facebook 应用程序并登录它时,但现在我无法在我的墙上发帖。我收到此错误:

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

代码:

公共类 FacebookLogin 扩展 Activity {

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();
    }

} }

我得到的令牌是空的。

【问题讨论】:

    标签: android facebook


    【解决方案1】:

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

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

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

    然后您应该存储您的会话,当再次使用该应用程序时,您将不会收到此错误。

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

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

    【讨论】:

    • 谢谢,但我不明白我在哪里得到 accessToken .. 如果我做 facebook.authorize(this,new String[] {"publish_stream"},.. 我得到一个 id 作为回报,但它不是我试过的令牌你能帮忙吗?我如何获得 sessionId 或 TokenId... 谢谢
    • 通过在 facebook.authorize 的 onComplete 函数中调用 getaccesstoken 并将其存储在首选项中解决问题,以便每次检查首选项并从那里加载访问令牌
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多