热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Facebook第三方登录

最近由于项目需要集成Facebook第三方登录,特此写篇博客记录自己在集成过程中遇到的问题。好了,废话不多说,具体的过程如下:首先到Facebook官网注册一个账号,然后创建一个应

最近由于项目需要集成Facebook第三方登录,特此写篇博客记录自己在集成过程中遇到的问题。好了,废话不多说,具体的过程如下:

  • 首先到Facebook官网注册一个账号,然后创建一个应用,创建完应用后将APPID保存,以备后面使用;
  • 点此下载iOS平台的SDK;
  • 集成SDK到项目中,具体操作如下:

1.打开下载的SDK的目录~/Documents/FacebookSDK;

2.拖拽Bolts.framework,FBSDKCoreKit.Framework,
FBSDKLoginKit.Framework,FBSDKShareKit.Framework
到项目的Frameworks组中。在拖拽选项中选择Copy items if needed和Create groups

  • 配置Xcode工程,点击info.plist文件,右键选择Open As Source Code,将如下代码复制即可:

CFBundleURLTypes


CFBundleURLSchemes

fb+APPID



FacebookAppID
APPID
FacebookDisplayName
APP名称

LSApplicationQueriesSchemes

fbapi
fb-messenger-api
fbauth2
fbshareextension

  • 添加依赖库,点击target->General->Linked Frameworks and Libraries,点击左下角的+号按钮,依次添加以下系统资源库:

Security.framework
libiconv.dylib
SystemConfiguration.framework
CoreGraphics.Framework
libsqlite3.dylib
CoreTelephony.framework
libstdc++.dylib
libz.dylib
Accounts.framework

  • AppDelegate导入import ,并实现FBSDKApplicationDelegate代理方法,具体代码如下:

- (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
];
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {
return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}

  • 打开Keychain,在 Xcode8iOS 10 的情况下,还需要做一步操作,那就是打开Keychain
    Xcode左侧导航栏最上面,点击“项目名称”,在右侧面板中选择Capabilities,在下面找到Keychain Sharing,点击ON按钮。

  • 测试登录(这里采用的是自定义按钮的方式)

1.在需要登录的Controller中导入如下头文件:

#import
#import

2.添加对应的登录代码

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logOut];// 先退出登录
[loginManager logInWithReadPermissions:@[@"public_profile",@"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

if (error == nil) {

//登录成功
NSLog(@"===userID%@====token%@",result.token.userID,result.token.tokenString);

FBSDKLoginManagerLoginResult *respOnse= result;

NSDictionary*params= @{@"fields":@"id,name,email,age_range,first_name,last_name,link,gender,locale,picture,timezone,updated_time,verified"};

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:result.token.userID
parameters:params
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSLog(@"%@",result[@"name"]);

if (error == nil) {
NSDictionary *picture = result[@"picture"];
NSDictionary *data = picture[@"data"];
NSString *avatar = @"";
if (data[@"url"] != nil && ![data[@"url"] isKindOfClass:[NSNull class]]) {

avatar = data[@"url"];
}
NSString *userName = @"";
if (result[@"name"] != nil && ![result[@"name"] isKindOfClass:[NSNull class]]) {

userName = result[@"name"];
}
NSString *uniOnid= @"";
if (result[@"id"] != nil && ![result[@"id"] isKindOfClass:[NSNull class]]) {

uniOnid= result[@"id"];
}

}else{
[self.view makeToast:[NSString stringWithFormat:@"登录失败,错误码为%ld",error.code] duration:3 position:CSToastPositionCenter];
}

}];

}else{

//登录失败
[self.view makeToast:[NSString stringWithFormat:@"登录失败,错误码为%ld",error.code] duration:3 position:CSToastPositionCenter];
NSLog(@"----%ld",error.code);
}
}];

这里需要注意的是,官网上写的是通过监听拿到对应的头像和姓名等信息,但是在集成过程中发现拿到的信息是nil,所以采用上述方式获取想要的信息.

  • 需要获取的权限

一般情况下,使用第三方登录,只需要public_profile, email and user_friends这三种权限就可以了,此时在app的设置页需要填写联系邮箱才能拥有这些权限。这种情况下,不需要facebook的审核,就可以使用了。
如果你的应用需要请求public_profile, email and user_friends之外的额外需求,在你发布应用之前,Facebook需要进行评审。

至此,Facebook第三方登录就集成完了,如果在集成的过程中有任何问题,欢迎在评论区留言,我会在第一时间给予回复。


推荐阅读
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 利用PHP SDK高效接入新浪微博热搜榜单功能 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • R开发:协调过滤推荐
    set.seed(1234)#加载数据包library(“recommenderlab”)#构造数据运用recommenderlab包实现协同过滤推荐,其数据类型采用S4类构造,需 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 基于二次预测的H.264分数像素运动估计算法在这项研究中,提出了一种基于二次预测的H.264分数像素运动估计(ME)算法。这里ÿ ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • Vuforia 开发指南:第二章 环境配置与搭建
    本章节详细介绍了如何在Vuforia官网上完成账号注册及环境配置。首先,访问Vuforia官方网站并点击“Register”按钮,按照提示填写必要的个人信息。提交表单后,系统将验证信息并创建账户。接下来,用户需要下载并安装Vuforia开发工具,确保开发环境的顺利搭建。此外,还提供了详细的配置步骤和常见问题的解决方案,帮助开发者快速上手。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 比特币的成功为区块链技术构建了可信货币的基石,标志着区块链1.0时代的到来。以太坊通过引入智能合约,极大地推动了去中心化应用的开发和普及,开启了区块链2.0时代。本文深入探讨了侧链技术在提升区块链扩展性方面的潜力和应用,分析了其在提高交易速度、降低成本和增强安全性等方面的优势,并讨论了当前面临的技术挑战和未来的发展方向。 ... [详细]
author-avatar
庾承泓_689
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有