2012-05-15 74 views
1

我在使用Facebook OAuth方法时遇到反复出现的问题。尽管尝试我自己的实现一切都应该是兼容的,对话框工作正常,但当我试图做请求时,我不断收到错误2500。我的登录代码,称为OnCreate中,如下:OAuth令牌无效:错误2500

mPrefs = m_kActivity.getPreferences(m_kActivity.MODE_PRIVATE); 
    String access_token = mPrefs.getString("access_token", null); 
    long expires = mPrefs.getLong("access_expires", 0); 
    if(access_token != null) { 
     m_kFacebookClient.setAccessToken(access_token); 
    } 
    if(expires != 0) { 
     m_kFacebookClient.setAccessExpires(expires); 
    } 

    /* 
    * Only call authorize if the access_token has expired. 
    */ 
    if(!m_kFacebookClient.isSessionValid()) { 

    m_kFacebookClient.authorize(m_kActivity, new String[] { 
      "publish_stream", "read_stream" }, 
      new Facebook.DialogListener() { // OVERLOADS } 
    } 

和我的发布方法,在的onCreate也做,是

byte[] data = null; 
    String dataPath = "/mnt/sdcard/DCIM/100MEDIA/VIDEO0001.3gp"; 
    String dataMsg = "TestStuff"; 
    String dataName = "VIDEO0001.3gp"; 

    Bundle param; 
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(m_kFacebookClient); 
    InputStream is = null; 
     is = new FileInputStream(dataPath); 
     data = readBytes(is); 
     param = new Bundle(); 
     param.putString("message", dataMsg); 
     param.putByteArray("video", data); 
     param.putString("filename", dataName); 
     mAsyncRunner.request("me", param, "POST", 
       new AsyncFacebookRunner.RequestListener() { // OVERLOAD } 

我试图得到令牌的信息,这是正确的:

05-15 14:53:17.149: D/myapp(7964): access token = AAACmjJqKCmMBAFRMjn49t7DvXEPlRyKnbdghdthdth31654651oGGJnBpSxEiLb5R3ZAxEEoI0x4JAfCvnQWIyK08cmzUGqX1I2IeeyV 
05-15 14:53:17.149: D/myapp(7964): expiration = 1337090401151 
05-15 14:53:17.169: D/myapp(7964): expiration datetime = Tue May 15 16:00:01 CEST 2012 
05-15 14:53:17.169: D/myapp(7964): is session valid? true 
05-15 14:54:48.849: D/myapp(7964): {"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException","code":2500}} 

编辑:如果我添加“offline_access”权限令牌变得错误。

05-15 15:24:06.639: D/myapp(8180): expiration = 0 
05-15 15:24:06.669: D/myapp(8180): expiration datetime = Thu Jan 01 01:00:00 CET 1970 
05-15 15:24:06.679: D/myapp(8180): is session valid? true 

至于行为,它从来没有要求我登录后,我第一次登录。如果我从手机上卸载它,我需要再次登录,如果我从我的FB帐户删除应用程序,它会再次请求所有权限。对话框也可以正常工作。

+0

检查你的令牌在这里:https://developers.facebook.com/tools/debug-它是无效的。大概一个角色被切断了? – avs099

+0

发行:\t 1337088246(4分钟前) 过期:从不 有效期:\t真 来源:\t移动Web Faceweb 作用域:\t create_note offline_access photo_upload publish_actions publish_stream read_stream share_item status_update video_upload –

+0

从您的文章令牌呢不行。你有另外一个吗?另外 - 它是应用程序令牌还是用户令牌? – avs099

回答

5

看起来像你没有设置访问令牌。试试这个请:

params.putString(Facebook.TOKEN, m_kFacebookClient.getAccessToken()); 
+0

这是工作,但新的错误出现lol –

+0

你会得到什么错误? – avs099

+0

100:“只能在有效的测试用户上为你的应用程序调用此方法”。可以访问应用程序配置:( –

相关问题