gpt4 book ai didi

android - Facebook Graph API 与喜欢的帖子不同

转载 作者:行者123 更新时间:2023-11-30 03:47:17 33 4
gpt4 key购买 nike

我的应用程序中有一个方法允许用户“喜欢”他/她的新闻提要中的帖子。这是通过使用 HttpMethod.POST 的简单图形请求完成的。但是,当我尝试使用 HttpMethod.DELETE 执行“不同”操作时,我收到错误回调:

02-08 00:35:57.298: I/Detail(2628): {Response:  responseCode: 403, graphObject: null, error: 
{HttpStatus: 403, errorCode: 200, errorType: OAuthException, errorMessage: (#200)
Feed story publishing to other users is disabled for this application}, isFromCache:false}

现在我假设这与最近尝试让所有与 Facebook 集成的应用程序使用所有 Facebook 外观的对话框和样式有关,但我可能是错的。这是 roadmap post这让我怀疑:

Removing ability to post to friends walls via Graph API We will remove the ability to post to a user's friends' walls via the Graph API. Specifically, posts against [user_id]/feed where [user_id] is different from the session user, or stream.publish calls where the target_id user is different from the session user, will fail. If you want to allow people to post to their friends' timelines, invoke the feed dialog. Stories that include friends via user mentions tagging or action tagging will show up on the friend’s timeline (assuming the friend approves the tag). For more info, see this blog post.

关于我可能做错了什么的任何想法,或者 Facebook 是否正在毁了我?谢谢!

编辑:这是我用来运行请求的代码。

Request likeRequest = new Request(Utility.fbSession, null, null, null, new Request.Callback() {
@Override
public void onCompleted(Response response) {
String responseString = response.toString();
Log.i("Detail", responseString);
updateDetail();
}
});
HttpMethod nextLikeCall = HttpMethod.DELETE;
likeRequest.setHttpMethod(nextLikeCall);
likeRequest.setGraphPath(itemId+"/likes");
likeRequest.executeAsync();

最佳答案

当您从图形数据中获取帖子 ID 时,它的格式应类似于:XXXXX_YYYYY。 XXXXX 只是用户 ID,YYYYY 是实际的帖子 ID。您需要做的是提取并仅使用图表为您提供的帖子 ID 的 YYYYY 部分。所以而不是 graph.facebook.com/XXXXX_YYYYY/likes.... 你想发送 graph.facebook.com/YYYYY/likes。这将适用于喜欢和不喜欢,您可以先在图形资源管理器中进行测试,然后再组合一个子字符串提取方法。

不确定如何在 Android 上提取字符串的一部分,但我知道在 Objective-C/iOS 中,可以这样做(代码未测试,供引用/想法):

SString *actualPostIdStr;      //The String we will put the actual postId in
NSString *oldIdStr = //<the string in format XXXXX_YYYYY>
NSInteger charCount = [oldIdStr length]; //get the length of the original XXXXX_YYYYY string
NSRange fRangeCount = [oldIdStr rangeOfString:@"_"]; //get count of characters to remove (XXXXXX)


if (fRangeCount.location != NSNotFound){
NSInteger startingPos = fRangeCount.location + 1; //get the starting character position of the actual postId
actualPostIdStr = [[oldIdStr substringWithRange:NSMakeRange(startingPos, charCount - startingPos)] copy];
}

希望这对您有所帮助。

编辑:
好的,所以我整天都在玩喜欢......似乎这种方法有时不起作用,但这完全取决于你试图喜欢/不喜欢的图形对象的类型。例如...普通状态帖子,此方法非常有效。但是,我在尝试为带有消息/故事帖子对象的照片点赞时遇到了问题。事实证明,在这种带有照片的帖子对象的图形数据中,除了状态帖子图形数据中的普通“id”之外,还有一个名为“object_id”的附加参数。在这种情况下,对于照片和故事帖子,您需要传递“object_id”,不变才能成功取消点赞。

这个困惑看起来要么是 FB 端的一个错误,要么是他们正在进行更改并禁止来自图形 API 的喜欢/不喜欢 & 只是忘记/还没有告诉我们 :) 希望是前者。与此同时,你只需要使用我上面的答案,但只要确保你测试了尽可能多的不同类型的帖子对象,并且在不同的 id(“id”的一部分)时使用 if 条件...“object_id”...等)是必需的。

关于android - Facebook Graph API 与喜欢的帖子不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14766499/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com