2010-11-23 14 views
9

Ich versuche, ein Foto auf eine Facebook-Seite hochzuladen, die ich mit dem iOS SDK und der Grafik-API verwende. Ich konnte Fotos an meine eigene Wand hochladen. Ich konnte auch eine Nachricht auf meiner Fanseiten-Seite als Admin veröffentlichen und ein Album auf meiner Fan-Seite erstellen, also denke ich, dass ich die richtigen Anrufe mache, aber keinen Erfolg habe.Senden von Fotos an die Facebook-Fanseite mit iOS SDK

Dies ist, was ich gerade mache.

Ich Anmeldung

Facebook *fb = [[Facebook alloc] init]; 
self.facebook = fb; 
[fb release]; 
NSArray *permissions = [[NSArray arrayWithObjects:@"read_stream", @"offline_access", @"publish_stream", @"manage_pages", @"user_photos", @"friends_photos",nil] retain]; 
[facebook authorize:FB_APP_ID permissions:permissions delegate:self]; 
[permissions release]; 

bei der Verwendung Nachdem ich mich einlogge, fordere ich die Konten

[facebook requestWithGraphPath:@"/me/accounts" andDelegate:self]; 

Die Konten mir für jede Seite mit Zugriffstoken zurückgegeben werden und App ich besitze. Ich verwende eine einfache Schleife, um die Konten zu analysieren, um das access_token zu ergänzen, das für die Seite bereitgestellt wird, auf die ich ein Foto hochladen möchte.

Ich habe dann mein Zugriffs-Token meines Facebook-Objekts auf das neue access_token gesetzt.

facebook.accessToken = new_accessToken; 

und versuchen, ein Foto meine Fanseite laden mit

UIImage *uploadImage = [UIImage imageNamed:@"t200.jpg"]; 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
       uploadImage, @"source", 
      @"test caption", @"message",    
      nil]; 


[facebook requestWithGraphPath:@"/me/photos" andParams:params 
     andHttpMethod:@"POST" andDelegate:self]; 

Die Antwort, die ich erhalten wird

 
{"error":{"type":"OAuthException","message":"(#1) An unknown error occurred"}} 

Ist das ein Fehler in der Facebook Graph API? Ich habe auch versucht, diesen Anruf mit Standard-HTTPS-Anfragen zu machen und das gleiche Ergebnis zu erhalten.

Antwort

0

Ich bin mir nicht sicher, da ich relativ neu in FB iOS Integration bin, aber ich denke, Sie sollten mich nicht verwenden/Fotos, aber die XYZ/Fotos wo XYZ ist die ID der Seite, die Sie veröffentlichen möchten.

+0

Ich habe es mit der Seiten-ID versucht, aber das funktioniert auch nicht. Die Verwendung von mir scheint korrekt zu sein, denn wenn Sie das Zugriffstoken ändern, greifen Sie darauf zu. Also ich greife auf deine Fan-Seite zu. – leo83

1

Alte Nachrichten, aber ... nicht sicher über den Teil der Fan-Seite, aber Sie müssen "? Access_token = ..." hinter "/ me/fotos" oder was auch immer Sie am Ende für die Grafik-API verwenden der unbekannte Fehler. Der Facebook sdk fügt das Zugriffs-Token nicht automatisch hinzu, so dass Sie es selbst tun müssen.

[facebook requestWithGraphPath: [NSString stringWithFormat: @ "/ me/photos? Access_token =% @", facebook.accessToken] undParams: params andHttpMethod: @ "POST" andDelegate: self];

+0

Wenn Sie in Facebook.m wie im SDK bereitgestellt suchen, sehen Sie, dass das access_token von SDK zu den Parametern hinzugefügt wird. Allerdings muss man ein anderes access_token für die Fan-Seite bekommen. – mahboudz

4

Ater Book erfolgreich anmelden, können Sie die Liste FanPage durch Anforderung bekommen @ „/ me/Konten“ und iterieren seine accessToken auf der Fanpage Sie wollen und fordern Sie auf Wunsch zu @"/FBFanPageID?fields=access_token"

Diese accessToken machen unterscheidet sich von dein facebook.accesstoken.

Nach Fanpage accessToken bekommen, legen Sie es als Facebook accessToken von

[_facebook setAccessToken:_accessTokenForFanPage]; // Dieser NECC Schritt ist

Jetzt können Sie von @"/FBFanPageID/albums"

von @"/FBFanPageID/photos"

Anfrage Fanpage Alben Fanpage Wand hochladen

Upload zu bestimmten Album von @"/AlbumsID/photos"

Zum Hochladen dieser Bilder wird das Param Wörterbuch verwendet.

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: IMAGE,@"source", IMAGECAPTION,@"message",
nil];

1

Ich habe sehr ähnliche Codes und es funktioniert, ist die einzige Sache, die etwas anders schaffe ich die Facebook-Instanz im AppDelegate ..

QRSMAppDelegate * Delegierter = (QRSMAppDelegate *) ist [[ UIApplication sharedApplication] Delegat];

Wie Sie ich ursprünglich die Facebook-Instanz in der View-Controller erstellt und ich kam mit einer Menge seltsamer Fehler. Das Problem (ich später herausgefunden habe) ist ... Facebook antwortet, indem es eine URL an die Facebook-Klasseninstanz weiterleitet und von außerhalb des einzigen Einstiegspunkts an Ihre App ist der App-Delegierte. (Schau dir die Facebook sdk Beispiel App Hackbook an!)

- (BOOL) Anwendung: (UIApplication *) Anwendung openURL: (NSURL *) url sourceApplication: (NSString *) sourceApplication Anmerkung: (id) Anmerkung {

BOOL ret = [facebook handleOpenURL:url]; 

.... Rückkehr (ret); }

Das Problem hier ist natürlich was, wenn ich nur von der AppDelegate (Face Instanziierung benötigen Sie Facebook in einem kleinen Teil meiner app und Meilen verwendet entfernt die Delegaten zu erklären!

Anstatt Gesicht gleichermaßen komplexe Probleme bei der Weitergabe der URL, war es eigentlich einfacher, nur zuweisen init der View-Controller (Facebook-Delegierten) in der App-Delegierten und übergeben sie die Ansicht Hierarchie

0

Sie können eine E-Mail an Ihre Fan-Seite senden und erhalten das beigefügte Foto wird angezeigt, als ob der Administrator es gepostet hätte

Wähle auf deiner Fanseite die Seite und dann Mobil. Auf der mobilen Seite zeigt Facebook dir eine E-Mail-Adresse an, die du verwenden kannst, um deine Fan-Seite zu posten.

In iOS verwende ich die http://code.google.com/p/skpsmtpmessage/ die E-Mail-

du ...

svn checkout http://skpsmtpmessage.googlecode.com/svn/trunk/-only skpsmtpmessage ablesbare

zum Download den Code

Don

verwenden müssen, senden Fügen Sie keinen Text in die E-Mail ein, außer etwas in der Betreffzeile. Sonst wird es nicht posten.