首先道歉,如果我弄错了,这是我的第一篇文章。
我一直在构建Android游戏,我一直在努力将Facebook发布到其中。以下是技术细节:
我插入了FacebookMobile.init,我传入了我的应用程序ID和回调函数。但是我收到以下消息:
“{”error“:{”message“:”必须使用活动访问令牌进行查询 有关当前的信息 用户 “” 类型 “:” OAuthException “ ”代码“:2500}}”
我注意到在其他一些页面上,人们已经买了这个,没有真正的解决方案。我尝试过在另一个网站上找到的damarmada解决方案,但这也没有用。
感谢您的时间,
答案 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);
}
}