FbConnect: публиковать на стене пользователя и в ленте новостей одновременно? - PullRequest
1 голос
/ 31 марта 2012

Я использую следующий код для входа в Fb с помощью FbConnect:

- (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://www.freeimagehosting.net/newuploads/49ncw.png", @"picture",
                                       actionLinksStr, @"actions",
                                       nil];

        [facebook dialog:@"feed" andParams:params andDelegate:self];


}

Сообщение опубликованона стене пользователя, но он не публикуется в ленте новостей.

Что я здесь не так делаю?

1 Ответ

1 голос
/ 31 марта 2012

Ссылка для недавно обновленного API Facebook: https://github.com/facebook/facebook-ios-sdk

Используете ли вы обновленный Facebook API? Потому что в недавно обновленном Facebook API вам совсем не нужно использовать JSONWriter и ActionLinks. Поэтому попробуйте обновить свой API и следуйте инструкциям на Facebook, предоставленным сайтом Facebook.

Ссылка на руководство по API Facebook: https://developers.facebook.com/docs/mobile/ios/build/

Вы также можете попробовать этот код. Это прекрасно работает для меня. Я использую ARC (Автоматический подсчет ссылок) . Так что, если вы хотите добавить это самостоятельно. Не забудьте добавить APP_ID в код и .plist файл тоже

-(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://fbrell.com/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];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...