2009-04-15 5 views
1

Nachdem ich auf der Suche quer durch diesen Beitrag auf den Facebook-Foren kam:Dokumentierten Verfahren zur Verwendung mit Facebook für das iPhone zum Hochladen von Fotos

link

Sie füttern die facebook UIImage-Objekt. Das scheint logisch, aber wo ist das dokumentiert? Die API-Dokumentation ist für alle Plattformen verallgemeinert. Wo sind die iPhone-spezifischen Anforderungen für Argumente und ihre Datentypen?

Dank

******-Update ***** Ich habe kam noch nicht über irgendwelche Dokumente API Cocoa gehört. Ich sammelte jedoch die Informationen, die ich benötigte, indem ich Foreninformationen, Facebook-Beispielcode und etwas Klebstoff zusammenstellte.

Hoffentlich werden sie in den nächsten Monaten etwas Konkreteres herausgeben.

Antwort

6

Der Vollständigkeit halber:

Im Folgenden wird erläutert, wie mit Facebook Connect zu interagieren: https://developers.facebook.com/docs/guides/web/

Die API-Aufrufe: https://developers.facebook.com/docs/reference/api/

Wenn Sie erweiterte Berechtigungen benötigen: https://developers.facebook.com/docs/guides/policy/examples_and_explanations/Extended_Permissions/

A schöne Obj-C-Hülle auf dem Mobile Orchard: http://www.mobileorchard.com/marketing-in-code-part-2-setting-a-users-status-in-facebook-from-an-iphone-app-a-tutorial/

Was folgt, ist meine Implementierung eines SessionViewController:

#import "SessionViewController.h" 
#import "FBConnect.h" 
#import "FBFeedDialog.h" 

/////////////////////////////////////////////////////////////////////////////////////////////////// 
// This application will not work until you enter your Facebook application's API key here: 

static NSString* kApiKey = @"XXXXXXXXXXXXXXXXXX"; 

// Enter either your API secret or a callback URL (as described in documentation): 
static NSString* kApiSecret = @"XXXXXXXXXXXXXXXXXX"; // @"<YOUR SECRET KEY>"; 

/////////////////////////////////////////////////////////////////////////////////////////////////// 

@implementation SessionViewController 

@synthesize label = _label; 
@synthesize anImage; 

- (void)done:(id)sender{ 

    [self dismissModalViewControllerAnimated:YES]; 


} 

/////////////////////////////////////////////////////////////////////////////////////////////////// 
// NSObject 

- (id)init { 
    if (self = [super init]) { 
     _session = [[FBSession sessionForApplication:kApiKey secret:kApiSecret delegate:self] retain]; 
    } 
    return self; 
} 


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:@"SessionViewController" bundle:nibBundleOrNil]) { 
     _session = [[FBSession sessionForApplication:kApiKey secret:kApiSecret delegate:self] retain]; 

    } 
    return self; 
} 

- (void)dealloc { 
    [_session release]; 
    [anImage release]; 
    [super dealloc]; 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////// 
// UIViewController 

- (void)viewDidLoad { 
    [_session resume]; 
    _loginButton.style = FBLoginButtonStyleWide; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return NO; 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////// 
// FBDialogDelegate 

- (void)dialog:(FBDialog*)dialog didFailWithError:(NSError*)error { 
    _label.text = [NSString stringWithFormat:@"Error(%d) %@", error.code, 
    error.localizedDescription]; 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////// 
// FBSessionDelegate 

- (void)session:(FBSession*)session didLogin:(FBUID)uid { 
    _permissionButton.hidden = NO; 
    _feedButton.hidden = NO; 

    NSString* fql = [NSString stringWithFormat: 
    @"select uid,name from user where uid == %lld", session.uid]; 

    NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@"query"]; 
    [[FBRequest requestWithDelegate:self] call:@"facebook.fql.query" params:params]; 
} 

- (void)sessionDidLogout:(FBSession*)session { 
    _label.text = @""; 
    _permissionButton.hidden = YES; 
    _feedButton.hidden = YES; 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////// 
// FBRequestDelegate 

- (void)request:(FBRequest*)request didLoad:(id)result { 

    if([result isKindOfClass:[NSArray class]]){ 
     NSArray* users = result; 
     NSDictionary* user = [users objectAtIndex:0]; 
     NSString* name = [user objectForKey:@"name"]; 
     _label.text = [NSString stringWithFormat:@"Logged in as %@", name]; 
    } 

} 

- (void)request:(FBRequest*)request didFailWithError:(NSError*)error { 
    _label.text = [NSString stringWithFormat:@"Error(%d) %@", error.code, 
    error.localizedDescription]; 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////// 

- (IBAction)askPermissionForPhotoUpload:(id)target { 
    FBPermissionDialog* dialog = [[[FBPermissionDialog alloc] init] autorelease]; 
    dialog.delegate = self; 
    dialog.permission = @"photo_upload"; 
    [dialog show]; 
} 
- (IBAction)publishPhoto:(id)target{ 

    NSMutableDictionary *args = [[[NSMutableDictionary alloc] init] autorelease]; 
    [args setObject:self.anImage forKey:@"image"]; 
    FBRequest *uploadPhotoRequest = [FBRequest requestWithDelegate:self]; 
    [uploadPhotoRequest call:@"photos.upload" params:args]; 
} 


- (void)askPermission:(id)target { 
    FBPermissionDialog* dialog = [[[FBPermissionDialog alloc] init] autorelease]; 
    dialog.delegate = self; 
    dialog.permission = @"status_update"; 
    [dialog show]; 
} 

- (void)publishFeed:(id)target { 
    FBFeedDialog* dialog = [[[FBFeedDialog alloc] init] autorelease]; 
    dialog.delegate = self; 
    dialog.templateBundleId = 9999999; 
    dialog.templateData = @"{\"key1\": \"value1\"}"; 
    [dialog show]; 
} 

@end 
+0

Der API-Link funktioniert nicht mehr. –

-2

Joe Hewitt (der Autor der Facebook iPhone App) veröffentlichte große Teile der Facebook-Anwendung als sein Three20 Framework. Es ist auf github gehostet.

+0

Ich habe gesehen, aber ich bin speziell über die iPhone Facebook Connect Bibliotheken sprechen. Dies ist keine Dokumentation darüber, welche Datentypen den Methoden zur Verfügung gestellt werden. –