Facebook第三方登录

    xiaoxiao2021-03-25  65

    分享样式一、

    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"]);

    }];

    }

    参考链接1

    参考链接2

    获取用户好友列表1

    获取用户好友列表2

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

    最新回复(0)