【发布时间】:2013-04-19 08:28:07
【问题描述】:
我正在尝试从应用程序实现类似页面的功能,我添加了最新的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 错误 5。)
在这里,我的问题是,
我不确定这是否是点赞页面的正确方式?
如果它是正确的,那么我真正错过了什么?
还有其他办法吗?
我已经访问了FacebookLikeView 和FBLikeButton 的页面,这里也已经提出了许多问题,但似乎没有一个问题适用于最新的Facebook SDK 更新。
我可以用FacebookLikeView 点赞一个页面,但这样做有很多问题,
- 一个
UIKeyBoard在赞页面后出现 - 如果需要登录,请花时间加载 Facebook 页面,并且
- 第二次点赞到同一页面后,点赞视图消失在某处!
更新 我在 Graph API Explorer 上测试了同样的东西,结果如下:
{
"error": {
"message": "(#100) Like actions are not yet supported against objects of this type.",
"type": "OAuthException",
"code": 100
}
}
更新 2
我确实侵入了FacebookLikeView 类并解决了我编写的上述问题,但它现在应该可以工作了吗?不,它不起作用,因为它正在使用现在已经过时的FBConnect,而且我最新的Facebook SDK 用于其他运行良好的东西! 如果有人能用最新的 SDK for 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);
}
有了这个,我可以看到点赞按钮,可以登录到浏览器,但是什么都不会发生!每次都会显示 Like 按钮!
这在旧 SDK FBConnect 上运行良好,问题出在最新的 Facebook SDK 上,
你可以找到FacebookLikeViewhere,
我错过了什么?
【问题讨论】:
标签: ios iphone facebook facebook-like facebook-page