【问题标题】:why doesn't https://graph.facebook.com/me/friends/myApp:myAction work?为什么 https://graph.facebook.com/me/friends/myApp:myAction 不起作用?
【发布时间】:2012-04-13 20:38:12
【问题描述】:

我创建了一个也发布对象的操作。 我启用了 publish_actions 权限。 我可以通过以下方式获取我的操作列表: https://graph.facebook.com/me/myApp:myAction

但我无法得到: https://graph.facebook.com/me/friends/myApp:myAction

或者我是否需要直接获取对象列表并以某种方式将自己过滤掉? 如果不通过关联的操作调用它,我实际上无法弄清楚如何获取对象列表。就是这样吗?

解决方法: 首先,我 fql.query "select uid, name, is_app_user from user where uid in (select uid2 from friend where uid1=me()) and is_app_user=1" 并找回安装了应用的朋友...

第二, 我取回该查询并使用它来批处理以下内容:

for (NSDictionary *d in friendsWithApp) {
NSString *jsonRequest = [NSString stringWithFormat:@"{ \"method\": \"GET\", \"relative_url\": \"%@/myApp:myAction/myObject\" }", [d objectForKey:@"uid"]];
    jsonRequestsArray = [jsonRequestsArray stringByAppendingString:jsonRequest];

    setCount++;
    if (setCount!=[presets count]) {
        jsonRequestsArray = [jsonRequestsArray stringByAppendingString:@", "];
    }
}
jsonRequestsArray = [jsonRequestsArray stringByAppendingString:@" ]"];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:jsonRequestsArray forKey:@"batch"];
[facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self];

呃。我还得到了这个 fql.query 的可用列表:

“SELECT post_id, actor_id, attribution FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND app_id = MY_APP_ID”

但它不会返回很多项目,因为它与最后 50 个新闻项目竞争。如果该应用程序使用得足够多,也许这将是一条路,但似乎使用率会下降,然后您就无法轻松访问较旧的帖子。

【问题讨论】:

    标签: ios facebook facebook-graph-api batch-file facebook-fql


    【解决方案1】:

    Permissions 的文档中,您可以清楚地看到除了您已经拥有的“publish_actions”之外的两个额外权限:

    user_actions:APP_NAMESPACE

    friends_actions:APP_NAMESPACE

    它指出:

    允许您检索另一个应用程序发布的操作为 由应用命名空间指定。例如,请求能够 检索具有命名空间的应用程序发布的操作 awesomeapp,提示用户输入 users_actions:awesomeapp 和/或 friends_actions:awesomeapp 权限。

    【讨论】:

    • 这似乎让我可以访问任何已安装的应用程序发布,但并不能帮助我知道调用什么来从我自己的应用程序中读取“friends_actions”。有什么建议吗?
    • 获得friends_actions:APP_NAMESPACE权限后,他们应该可以通过/USER_ID_OF_FRIEND/APP_NAMSPACE:ACTION_NAME访问
    • 这确实有效。我正在尝试获取朋友执行的自定义操作的列表。不确定最佳实践是什么,或者它是否不简单。我想避免重复我的朋友。
    • 用户对象的“朋友”连接没有连接。所以这个: /me/friends/likes 不起作用(即使你有权限),但 FRIENDID/likes 会起作用。我想说您应该为此使用 FQL,但是您正在寻找的信息无法通过 FQL 访问,至少目前还无法访问。您将需要遍历朋友并检查每一个。您可以使用Batch Requests 来加快速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2015-09-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多