FacebookMobile.init OAuthException

时间:2012-06-13 18:38:05

标签: android facebook-graph-api air facebook-android-sdk

首先道歉,如果我弄错了,这是我的第一篇文章。

我一直在构建Android游戏,我一直在努力将Facebook发布到其中。以下是技术细节:

  • Windows 7
  • 在FDT中发展
  • 使用Flex 4.6和Adobe Air for Android
  • ActionScript 3.0。

我插入了FacebookMobile.init,我传入了我的应用程序ID和回调函数。但是我收到以下消息:

  

“{”error“:{”message“:”必须使用活动访问令牌进行查询   有关当前的信息   用户 “” 类型 “:” OAuthException “ ”代码“:2500}}”

我注意到在其他一些页面上,人们已经买了这个,没有真正的解决方案。我尝试过在另一个网站上找到的damarmada解决方案,但这也没有用。

感谢您的时间,

4 个答案:

答案 0 :(得分:1)

对我来说它有效。这就是我所做的。

1,我使用facebook App设置页面中的“添加平台”按钮为我的应用添加了android平台 2,我下载了源代码并使用它而不是swc 3,在Facebook App Settings页面中转到设置 - >高级并将http://www.facebook.com/connect/login_success.html添加到“有效OAuth重定向URI”字段中。并设置“本机或桌面应用程序?” '是'。现在我的应用程序将加载Facebook登录页面到StageWebView,我们可以登录。 这是我登录的方式。

var permissions:Array = ["user_about_me","user_friends","publish_actions"];
var stageWeb:StageWebView = new StageWebView ();
stageWeb.stage = stage;// Your app stage
stageWeb.viewPort = new Rectangle (0, 0, stage.stageWidth, stage.stageHeight);
FacebookMobile.login (onLogin, stage, permissions, stageWeb);

希望这对你也有帮助。

答案 1 :(得分:0)

听起来您的应用尚未登录,或者您使用的是SingleSignOn Facebook应用未登录。登录会为您/ Facebook应用提供一个访问令牌,然后您可以根据数据请求提供该令牌。

答案 2 :(得分:0)

<强>已更新 我相信你现在把FacebookMobile.login()放在错误的位置。将它添加到FacebookMobile.init()的处理程序中,理想情况下是在某种 else 测试中,如果成功对象返回null(当你没有初始化时它会这样做) )。

你仍然可以使用下面的内容,虽然facebook-actionscript-api似乎确实有效。

为了让自己更简单,建议按照“Windows,OS X和Linux本机应用程序”下的建议进行操作:https://developers.facebook.com/docs/authentication/

根据文档的最后一行,使用StageWebView(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/StageWebView.html)并监听StageWebView locationChange事件。

按照您的意愿处理位置重定向uris,但这里的关键是他们为您提供访问令牌的默认位置(https://www.facebook.com/connect/login_success.html)获取访问令牌使用StageWebView位置属性从URL中获取,一旦它在您的应用程序中,您就可以轻松创建自己的URLRequest并使用它来使用远程服务。

我有最好的,如果你有更好的方法,请发表评论。

答案 3 :(得分:0)

解决方案!!

private function onAddedToStage(event:Event):void
{
    FacebookMobile.init(_appId, initHandler);
}   
private function initHandler(success:Object,fail:Object):void
{
    if(success)         
{               
    // good the user is already connected           
}           
else            
{
    var myWebView:StageWebView = new StageWebView();
    myWebView.stage = Starling.current.nativeStage;
    myWebView.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);
    FacebookMobile.login(loginHandler, Starling.current.nativeStage, PERMISSIONS, myWebView);
    }       
}

来自:http://forums.adobe.com/thread/928058