【问题标题】:Can't get the Facebook publish_action permission on iOS无法在 iOS 上获得 Facebook publish_action 权限
【发布时间】:2012-07-04 09:26:51
【问题描述】:

我已经为此花费了数小时,但无法使其正常工作。基本上,我只想要我的应用程序中的一个按钮,它会在 Facebook 上“点赞”自己。 我已经在开发 Facebook 上创建了该应用程序,并有一个关联的应用程序页面。 在我的代码中,我请求这些权限:

_permissions =  [NSArray arrayWithObjects:@"publish_stream", @"publish_actions", @"user_birthday", nil];

我可以很好地检索个人资料图片,但是当我尝试使用此代码“点赞”时:

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       _facebook.accessToken, @"access_token",
                                       nil];
        [_facebook requestWithGraphPath:@"329756493773381/og.likes" andParams:params andHttpMethod:@"POST" andDelegate:self];

我收到此错误响应:

(facebookErrDomain error 10000.)" UserInfo=0x20090590 {error={
    code = 200;
    message = "(#200) Requires extended permission: publish_actions";
    type = OAuthException;
}}

登录应用程序时,Facebook 要求我允许查看我的生日,并告诉我它将代表我发布,但它似乎没有获得 publish_actions 权限。

我有什么遗漏需要做的吗?

我看到 Temple Run 有一个 Facebook Like 按钮,按下它会提供奖励金币。这是我希望达到的目标。

编辑-------

我已将权限更改为 @"publish_actions"、@​​"user_birthday",现在身份验证对话框显示

“此应用可能会代表您发布,包括您喜欢的对象和 更多”

这似乎是 publish_actions 权限,但是我仍然收到错误

message = "(#200) 需要扩展权限:publish_actions";

我改变了这一行:

[_facebook requestWithGraphPath:@"329756493773381/og.likes" andParams:params andHttpMethod:@"POST" andDelegate:selrf];

到这里:

[_facebook requestWithGraphPath:@"329756493773381/og.likes" andDelegate:self];

我现在确实收到了回复,尽管它没有发布“喜欢”

这是结果响应:

{
    data =     (
    );
    paging =     {
        next = "https://graph.facebook.com/329756493773381/og.likes?sdk=ios&sdk_version=2&access_token=BAAGeAp3ZBGwoBAPICjlgB5zK0YECyP8yElf8hJoMrx8Qs4vjeZAK5PlXFAVbGM1JyXHE0wZBvU0aBeCzCUTZBejQgoJ44CAIQsrG64TfrHdxjMqWD&format=json&offset=25&limit=25";
    };
}

知道接下来要尝试什么吗?

编辑 2 --------------- 我正在这方面取得进展。 我已经像这样将用户 ID 添加到图形请求中

NSString *graphPath = [NSString stringWithFormat:@"%@/og.likes",facebookID];

并使用了这些参数

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       @"AAAGeAp3ZBGwoBABvKjsPZAoQQNG9cDPJI2v2TI8acyyPSNtm9ZBkfydHqVZAjSKWSbLuvFwxyxSrCts7kFZCnh7Y6f5PFNlWb6smF8XF33wlRZBgfLyhT1", @"access_token",
                                       @"http://samples.ogp.me/329756493773381", @"object",
                                       nil];

现在我的时间线上出现了一个点赞 :-) 我使用的是 Facebook 登录提供的访问令牌,但似乎图形对象提供的访问令牌不同。

现在,我看到的类似模式:

Darren 喜欢 MyAPP 上的对象

有没有可能

Darren 喜欢 MyAPP 它链接到应用程序的 Facebook 页面?

谢谢

【问题讨论】:

  • FB 应用设置 -> 高级 -> 身份验证中的应用类型是否设置为“本机/桌面”?
  • 是的。我现在认为这是不可能的。您可以点赞应用中的内容,例如食谱应用中的菜谱,但不能点赞粉丝页面等。
  • 你是对的。 docs 表示必须满足以下条件才能发布内置的类似操作:应用内内容具有使用 Open Graph 元标记正确标记的 Open Graph 对象页面,并且查看者有意点击在与应用内内容相关联的自定义应用内“赞按钮”上。但是,您始终可以重定向到您的 Facebook 页面。

标签: ios xcode facebook facebook-graph-api facebook-ios-sdk


【解决方案1】:

检查您是否已完成以下步骤:

https://developers.facebook.com/docs/opengraph/tutorial/

“注意:此权限的用户提示将显示在增强身份验证对话框的第一个屏幕中,并且不能作为身份验证流程的一部分撤销。” - 链接

如果你还没有,试试这个:

Auth Dialog -> 配置 Facebook 如何将用户推荐给您的应用 -> 添加 publish_actions 权限。

https://developers.facebook.com/docs/opengraph/authentication/

“要启用新的身份验证对话框,请转到应用仪表板,然后在应用的高级部分启用增强的身份验证对话框设置。” -链接

希望这会有所帮助!

【讨论】:

  • 我试过重置模拟器。我已经从我的 Facebook 帐户设置中删除了该应用程序,这迫使它再次请求许可。它问我并告诉我它将代表我发布,但我仍然没有获得 publish_actions 权限!
  • 在 SO 上的其他地方发现了这个:“我认为 fb 会在不久的将来改变这种行为,但目前看来,该应用程序必须属于“游戏”类别才能请求“发布操作”权限。 ..(我处于沙盒模式)”
  • 我的应用属于游戏类别,尽管我认为这是在 publish_actions 处于 BETA 测试时提到的。现已全面发布。
  • 我已经通读了它,但是由于示例设置了一个网站,因此很难理解。我很确定我已经正确设置了它。 Auth 对话将 publish_actions 作为用户和朋友权限,将 publish_stream 作为扩展权限。愚蠢的是,如果不在 Native iOS APP 下的基本设置中输入应用商店 ID,您将无法到达这一点!所以必须放入一个虚拟的。我仍然没有获得许可
  • 哦,我不能提交图表,直到我用过一次,这显然是我做不到的。
【解决方案2】:

这似乎与我在这个 SO 问题上遇到的问题相同: Facebook iOS SDK 3.0, implement like action on a url?

但是,如果您想在应用程序中为您的 facebook 页面点赞,则在 Objective C 中无法做到这一点。只能使用您可以在此处生成的 javascript Like 按钮: https://developers.facebook.com/docs/reference/plugins/like/

Temple Run 的做法是在 web 视图中显示点赞按钮,所以他们的点赞按钮实际上是在他们的服务器上,这可能是一个丑陋的黑客,但可以用于点赞页面。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多