Facebook第三方登录

本文详细介绍了如何在iOS应用中集成Facebook第三方登录,包括设置隐私要求、处理分享内容、无客户端时的分享方式、导入Facebook SDK、配置Info.plist、 AppDelegate连接处理以及登录事件的处理。同时提供了代码示例和参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


分享样式一、


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 创建的任何内容。safe_image.php.png


一、有装客户端,默认只跳转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"]);

}];

}



参考链接1

参考链接2

获取用户好友列表1

获取用户好友列表2



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值