2012-03-30 13 views
1

ich den folgenden Code verwenden FbConnect einzuloggen fB mit:FbConnect: Veröffentlichen Sie gleichzeitig auf der Benutzerwand und im Newsfeed?

- (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]; 
    } 

} 

Dann benutze ich den folgenden Code, um Benutzer-Wand zu schreiben:

- (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]; 


} 

Die Post fein auf der Benutzer-Wand veröffentlicht , aber es wird nicht im Newsfeed veröffentlicht.

Was mache ich hier falsch?

Antwort

1

Link zur Verwendung neu aktualisiert Facebook API:https://github.com/facebook/facebook-ios-sdk

Sind Sie aktualisiert Facebook-API? Denn in der kürzlich aktualisierten Facebook-API müssen Sie JSONWriter und ActionLinks überhaupt nicht verwenden. Versuchen Sie also, aktualisieren Sie Ihre API und folgen Sie der Facebook-Anleitung von Facebook-Website gegeben.

Link for Facebook-API-Tutorial:https://developers.facebook.com/docs/mobile/ios/build/

Sie diesen Code auch versuchen können. Es funktioniert perfekt für mich. Ich verwende ARC (Automatische Referenzzählung). Also wenn du es selbst hinzufügen willst. Vergessen Sie nicht, Sie APP_ID in Code und .plist Datei zu

-(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]; 

} 
+0

@ "http://fbrell.com/f8.jpg" hinzufügen ==> können wir nicht hier lokales Bild verwenden? –

+0

Ich denke, wir können nicht .. Aber lassen Sie uns sogar versuchen, die URL des lokalen Bildes zu erhalten und stattdessen diese URL verwenden. vielleicht wird es funktionieren .. Nach Überprüfung überprüft das mich informieren .. –

Verwandte Themen