分享样式一、
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
//标题
content.contentTitle = @"test34";
//正文
content.contentDescription = @"This is a nice picture,Do U like it?";
//图片URL
content.imageURL = [NSURL URLWithString:@"http://p4.sinaimg.cn/5615038059/180/31051455447883"];
content.contentURL = [NSURL URLWithString:@"http://img06.tooopen.com/images/20160922/tooopen_sy_179662854161.jpg"];
content.quote = @"这是个测试页1";
[FBSDKShareDialog showFromViewController:self withContent:content delegate:self];
关于分享的官方隐私要求
2.3不得使用并非用户或商家创建的内容预填帖子的说明、评论、消息或其他用户消息参数,即使用户可以在分享前编辑或移除这些内容。您可以使用 Facebook分享对话框在帖子中预填一个话题标签,但不得预填并非用户或商家通过 API 创建的任何内容。
一、有装客户端,默认只跳转App
shareLink(只有contentURL显示,标题没有,可以定制H5 URL包含图片和文字,官方示例是这样解决), 可以通过设置 dialog.model 为webView限制为网页发布
sharePhoto(只有本地image显示,标题没有,图片文字没有,imageUrl 本地和link无效)
二、没装客户端,打开分享网页
shareLink(标题正副都有,imageUrl contentURL都有,)
sharePhoto(error: Feed share dialogs support FBSDKShareLinkContent,不能使用sharePhoto类)
FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
photo.caption = @"图片234512";
photo.image = [UIImage imageNamed:@"login"];
// photo.imageURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"login" ofType:@"png"]];
// photo.imageURL = [NSURL URLWithString:@"http://p4.sinaimg.cn/5615038059/180/31051455447883"];
FBSDKSharePhotoContent *content2 = [[FBSDKSharePhotoContent alloc] init];
content2.photos = @[photo];;
[FBSDKShareDialog showFromViewController:self withContent:content2 delegate:self];
(以下为参考资料)
转自:http://www.jianshu.com/p/6950d10747cf
参考:http://www.jianshu.com/p/dd35278ee0a3 简书
1、注册Facebook开发者:https://developers.facebook.com---->默认此帐号是管理员,可以分享到朋友圈,如果正式公开要审核App才可以获得"分享授权"
选择IOS、安卓平台首页 https://developers.facebook.com/quickstarts/
Framework search path :
2.导入Facebook第三方登录的Framework(FBSDKLoginKit.framework,FBSDKCoreKit.framework),因为我只用到了他的登录,只需要获取到他的uid,name,email(只限邮箱注册用户)。SDK下载地址

3.下面就要倒入我们的项目了,因为Facebook的framework都比较大,这里我们就不copy进我们的项目了,我们引入就可以了。将上图两个文件放到项目下面,然后打开Xcode,将文件夹拖入项目,选择 Create groups for any added folders。取消选择 Copy items into destination group's folder。这将在 SDK 的安装位置对其进行引用,而不是将 SDK 复制到应用程序中。

如果报错说找不到这个路径,那么需要在Build Settings->Framework Search Paths添加一下该Framework的路径

接着更改plist文件
创建名字为FacebookAppID(string)的键–输入Facebook app ID
创建名字为FacebookDisplayName(string)的键–输入Facebook appDisplay Name
创建名为URL types的键组
创建名为URL Schemes的子项
添加字符串:前缀fb加App ID例如(fb123456)

因为使用了 SDK v4.6.0 或更高版本,所以需要在plist文件中添加
<key>LSApplicationQueriesSchemes<key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>

至此,前期的准备工作完成,下面开始代码了
4.要对 Facebook 登录或 Facebook 对话(或需要切换至原生 Facebook 应用程序或 Safari 的任何操作)的结果进行后置处理,您需要将 AppDelegate 连接到 FBSDKApplicationDelegate。在 AppDelegate.m 中添加:
// AppDelegate.m#import- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
];
}

记录应用激活
基本的例子是记录应用激活。要执行此操作,请将以下代码片段添加到 AppDelegate.m:
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
[FBSDKAppEvents activateApp];
}

5.创建一个按钮,下面我们就写点击事件跳转到Facebook第三方登录
//这个接口需要翻墙
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];//这个一定要写,不然会出现换一个帐号就无法获取信息的错误
[login
logInWithReadPermissions: @[@"public_profile",@"email",@"user_about_me"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Process error");
} else if (result.isCancelled) {
NSLog(@"Cancelled");
} else {
NSLog(@"succeed");
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:result.token.userID
parameters:@{@"fields": @"id,name,email"}
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result,NSError *error) {
// Handle the result
NSLog(@"%@,%@,%@",result[@"id"],result[@"name"],result[@"email"]);
}];
}

原文链接:http://www.jianshu.com/p/6950d10747cf
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。