我正在尝试从应用程序实现类似页面的功能,我已经添加了最新的Facebook SDK
并实现了所有委托和处理程序来检查用户登录到应用程序的会话和状态。 到这里为止一切顺利(示例代码中已经完成了这一步)。 无论如何,我在Facebook开发者网站上找到了以下代码,用于喜欢一个页面,但它似乎不起作用。
- (void) likeFacebookIndia
{
NSMutableDictionary<FBGraphObject> *action = [FBGraphObject graphObject];
action[@"object"] = @"http://www.facebook.com/FacebookIndia";
//action[@"object"] = @"FacebookIndia";
[FBRequestConnection startForPostWithGraphPath:@"me/og.likes"
graphObject:action
completionHandler:^ (FBRequestConnection *connection,
id result,
NSError *error)
{
// handle the result
if(error)
{
NSLog(@"%@",error.localizedDescription);
}
else
{
NSLog(@"%@",result);
}
}];
}
成功登录后,我曾调用上述函数,但在
likeFacebookIndia
模块中出现以下错误:
我的问题是:操作无法完成。(com.facebook.sdk error 5.)
我不确定这是否是喜欢页面的正确方法?
如果正确,那么我真正缺少的是什么?
还有其他方法吗?
FacebookLikeView
和FBLikeButton
页面,也有很多问题已经在这里提问,但没有一个似乎适用于最新的Facebook SDK
更新。我能够使用
FacebookLikeView
来点赞,但有许多问题:
- 点赞后会显示
UIKeyBoard
- 如果需要登录,则加载Facebook页面需要时间
- 第二次对同一页面进行点赞后,点赞视图消失!
{
"error": {
"message": "(#100) Like actions are not yet supported against objects of this type.",
"type": "OAuthException",
"code": 100
}
}
FacebookLikeView
类并解决了上述问题,但它现在不起作用,因为它正在使用过时的FBConnect
,而且我有最新的Facebook SDK
用于其他工作,这些工作正常运行!如果有人能够使用最新的SDK为FacebookLikeView创建新项目,那会很好。 [我已经在努力了!]这就是我的做法。
//Calling this function in `viewDidLoad`
- (void) addLikeView
{
facebookLikeView.delegate = self;
facebookLikeView.href = [NSURL URLWithString:@"http://www.facebook.com/FacebookIndia"];
facebookLikeView.layout = @"button_count";
facebookLikeView.showFaces = NO;
facebookLikeView.alpha = 0;
[facebookLikeView load];
}
#pragma mark - Facebook Delegate
-(void)sessionDoneForPageShare:(FBSession *)session state:(FBSessionState)state error:(NSError *)error
{
if(error)
{
NSLog(@"error : %@",error);
}
else
{
[facebookLikeView load]; //In logged in or logged out, we've to call this
}
}
- (void)facebookViewControllerCancelWasPressed:(id)sender
{
NSLog(@"Login was cancelled by user");
}
- (void)facebookViewControllerDoneWasPressed:(id)sender
{
NSLog(@"User tapped done button on login view");
}
- (void) checkFBloggedInStatus
{
if (!FBSession.activeSession.isOpen)
{
NSArray *permissions = [NSArray array];
[FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceOnlyMe allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error){
[self sessionDoneForPageShare:session state:status error:error];}
];
}
}
#pragma mark FacebookLikeViewDelegate methods
- (void)facebookLikeViewRequiresLogin:(FacebookLikeView *)aFacebookLikeView {
[self checkFBloggedInStatus];
}
- (void)facebookLikeViewDidRender:(FacebookLikeView *)aFacebookLikeView {
[UIView beginAnimations:@"" context:nil];
[UIView setAnimationDelay:0.5];
facebookLikeView.alpha = 1;
[UIView commitAnimations];
}
- (void)facebookLikeViewDidLike:(FacebookLikeView *)aFacebookLikeView {
NSLog(@"liked");
}
- (void)facebookLikeViewDidUnlike:(FacebookLikeView *)aFacebookLikeView {
NSLog(@"unliked");
}
- (void)facebookLikeView:(FacebookLikeView *)aFacebookLikeView didFailLoadWithError:(NSError *)error
{
NSLog(@"FacebookLikeView error: %@",error);
}
通过这样的操作,我可以看到点赞按钮,能够成功登录浏览器,但是接下来什么也没有发生!每次都只会展示点赞按钮! 在旧版SDK“FBConnect”中该功能非常好用,问题出在最新版本的Facebook SDK上。 你可以从这里找到“FacebookLikeView”。 我还需要添加些什么呢?