看完之后我在facebook论坛上发了这篇文章:
链接
他们正在为Facebook对象提供UIImage.这似乎合乎逻辑,但这在哪里记录?API文档推广到所有平台.iPhone对参数及其数据类型的具体要求在哪里?
谢谢
******更新*****我还没有遇到任何与Cocoa有关的API文档.但是,我确实通过拼凑论坛信息,Facebook示例代码和一些胶水来收集我需要的信息.
希望他们能在接下来的几个月内发布更具体的内容.
为了完整性:
以下说明如何与Facebook Connect进行交互:https: //developers.facebook.com/docs/guides/web/
API调用:https: //developers.facebook.com/docs/reference/api/
如果您需要扩展权限:https: //developers.facebook.com/docs/guides/policy/examples_and_explanations/Extended_Permissions/
Mobile Orchard上一个不错的Obj-C包装器:http: //www.mobileorchard.com/marketing-in-code-part-2-setting-a-users-status-in-facebook-from-an-iphone-app-一个教程/
接下来是我对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"; // @""; /////////////////////////////////////////////////////////////////////////////////////////////////// @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