我在我的 iPhone 应用程序屏幕上提供了一个 facebook 共享选项,并且需要在用户的 facebook 个人资料上共享一些图像和 URL。我知道有几个第三方框架,如 ShareKit 和其他功能,如适用于 iOS 的 facebook sdk,但这是我能做到的最好方法,我需要获取共享按钮,直到现在,如图所示以下
并单击应重定向到身份验证。并且应该兼容iOS5及以上,希望我的问题很清楚。
提前致谢
我在我的 iPhone 应用程序屏幕上提供了一个 facebook 共享选项,并且需要在用户的 facebook 个人资料上共享一些图像和 URL。我知道有几个第三方框架,如 ShareKit 和其他功能,如适用于 iOS 的 facebook sdk,但这是我能做到的最好方法,我需要获取共享按钮,直到现在,如图所示以下
并单击应重定向到身份验证。并且应该兼容iOS5及以上,希望我的问题很清楚。
提前致谢
通过研究自己解决了这个问题
我使用 FacebookGraph API
是因为我的应用程序需要iOS4
+ 的支持,如果它是 iOS6 和iOS6
Facebook 集成一样简单,并且只需要几行代码来实现它。导入Graph APi
文件并添加以下代码:
@synthesize facebook;
//login with facebook
- (IBAction) facebookButtonPressed {
if (!facebook || ![facebook isSessionValid]) {
self.facebook = [[[Facebook alloc] init] autorelease];
NSArray *perms = [NSArray arrayWithObjects: @"read_stream", @"create_note", nil];
[facebook authorize:FACEBOOK_API_KEY permissions:perms delegate:self];
}
else {
[self fbDidLogin];
}
}
//upload image once you're logged in
-(void) fbDidLogin {
[self fbUploadImage];
}
- (void) fbUploadImage
{
NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
resultImage, @"picture",
nil];
[facebook requestWithMethodName: @"photos.upload"
andParams: params
andHttpMethod: @"POST"
andDelegate: self];
self.currentAlertView = [[[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Facebook", @"")
message:NSLocalizedString(@"Uploading to Facebook.", @"")
delegate:self
cancelButtonTitle:nil
otherButtonTitles: nil] autorelease];
[self.currentAlertView show];
}
//facebook error
- (void)request:(FBRequest*)request didFailWithError:(NSError*)error
{
[self.currentAlertView dismissWithClickedButtonIndex:0 animated:YES];
self.currentAlertView = nil;
UIAlertView *myAlert = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Error", @"")
message:NSLocalizedString(@"Facebook error message", @"")
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[myAlert show];
[myAlert release];
}
//facebook success
- (void)request:(FBRequest*)request didLoad:(id)result
{
[self.currentAlertView dismissWithClickedButtonIndex:0 animated:YES];
self.currentAlertView = nil;
UIAlertView *myAlert = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Facebook", @"")
message:NSLocalizedString(@"Uploaded to Facebook message", @"")
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[myAlert show];
[myAlert release];
}
并在 facebook 中获取特定 URL 的共享计数,使用
http://graph.facebook.com/?id=url
但这会返回所有喜欢、分享和帖子的总数,因此最好找到一些替代方法。
希望这有帮助 谢谢