Joa*_*rom 7 iphone facebook objective-c facebook-graph-api facebook-ios-sdk
我正试图通过Facebook iOS-SDK 3.0实现与facebook open-graph-api一样.除了FbGraphObject之外,一切似乎都有效,因为我不知道它应该是什么样子,因为这显然不起作用.
我想要做的是喜欢作为对象发布的网址.一个简单的喜欢通过开放图.
我得到以下代码的错误消息是:
The action you're trying to publish is invalid because it does not specify any
reference objects. At least one of the following properties must be specified: object.
Run Code Online (Sandbox Code Playgroud)
我使用的代码是这样的:
FBGraphObject *objectToLike = [[FBGraphObject alloc]initWithContentsOfURL:[NSURL URLWithString:facebookLike.titleLabel.text]];
FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession] graphPath:@"me/og.likes" graphObject:objectToLike];
FBRequestConnection *connection = [[FBRequestConnection alloc] init];
[connection addRequest:requestLike
completionHandler:
^(FBRequestConnection *connection, id result, NSError *error) {
if (!error &&
result) {
DLog(@"NothingWentWrong");
}
DLog(@"MajorError: %@", error);
}
];
[connection start];
Run Code Online (Sandbox Code Playgroud)
更新:
检查了一些更多的信息,我猜它使用这个方法:https: //developers.facebook.com/docs/sdk-reference/iossdk/3.0/class/FBGraphObject/#//api/name/graphObject
以某种方式创建一个对象.这是我可能需要做的事情的graphObject方法.任何帮助都将不胜感激.
我实际上设法创建一个简单而相当肮脏的解决方案.该解决方案似乎不是最佳的,但它目前是一个有效的解决方案.
如果有人在Facebook上使用了这个网址上的资源管理器工具:https: //developers.facebook.com/tools/explorer/
你知道当Facebook分享喜欢的时候URL会是什么样子.它必须具有URL和访问令牌.因此,我的解决方案只是忽略从Facebook SDK发送任何内容,只是将发布请求发送到我在资源管理器工具中使用的相同URL.
如果你仔细观察,似乎在facebooks文档上有一些引用它,但没有人确切地解释如何实际建立连接,所以这是我的解决方案:
NSString *urlToLikeFor = facebookLike.titleLabel.text;
NSString *theWholeUrl = [NSString stringWithFormat:@"https://graph.facebook.com/me/og.likes?object=%@&access_token=%@", urlToLikeFor, FBSession.activeSession.accessToken];
NSLog(@"TheWholeUrl: %@", theWholeUrl);
NSURL *facebookUrl = [NSURL URLWithString:theWholeUrl];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:facebookUrl];
[req setHTTPMethod:@"POST"];
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[responseData bytes]];
NSLog(@"responseData: %@", content);
Run Code Online (Sandbox Code Playgroud)
如果你查看代码,我只需要获取url并在url中放入两个动态字符串,一个包含object-url,另一个包含访问令牌.我创建了一个URLRequest并使其成为一个POST请求,并且来自facebook的响应被记录下来,所以实际上可以看到是否通过了.
可能会有一些性能改进可以通过实际请求完成,但如果您发现任何减速,我会留给您.
我仍然对其他解决方案感兴趣,但这是我现在要使用的解决方案.
| 归档时间: |
|
| 查看次数: |
8171 次 |
| 最近记录: |