FBConnect をプロジェクトに追加し、以下のコードを使用して Facebook でキャプチャ画像を共有します。また、デリゲート FBSessionDelegate、FBDialogDelegate、FBRequestDelegate を .h ファイルに追加します。ローカル イメージを共有する場合は、サーバーにイメージをアップロードする必要はありません。uiimage オブジェクトを Facebook パラメータに渡します。
if (facebook == nil) {
facebook = [[Facebook alloc] initWithAppId:@"your facebook key "];
}
NSArray* permissions = [NSArray arrayWithObjects:
@"publish_stream", @"offline_access", nil] ;
//
[facebook authorize:permissions delegate:self];
- (BOOL) takeScreenshot
{
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
viewImage,@"message",
nil];
[facebook requestWithGraphPath:@"me/photos" // or use page ID instead of 'me'
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
return YES;
}
#pragma mark -
#pragma mark FBSessionDelegate
/**
* Called when the user has logged in successfully.
*/
- (void)fbDidLogin {
isFBLogged = YES;
[self takeScreenshot];
if([self takeScreenshot])
{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Image share sucessfully"
message: nil
delegate: nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
else
{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Image share unsucessfully"
message: nil
delegate: nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}