facebook登陆ios
1:在info.plist里填写fbid 和fb对应的url scheme
2:ios9填写白名单如下:
<key>LSApplicationQueriesSchemes</key><array><string>fbapi</string><string>fb-messenger-api</string><string>fbauth2</string><string>fbshareextension</string></array><key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/><key>NSExceptionDomains</key><dict><key>akamaihd.net</key><dict><key>NSIncludesSubdomains</key><true/><key>NSThirdPartyExceptionRequiresForwardSecrecy</key><false/></dict><key>facebook.com</key><dict><key>NSIncludesSubdomains</key><true/><key>NSThirdPartyExceptionRequiresForwardSecrecy</key><false/></dict><key>fbcdn.net</key><dict><key>NSIncludesSubdomains</key><true/><key>NSThirdPartyExceptionRequiresForwardSecrecy</key><false/></dict></dict></dict>
3:连接应用程序委托
要对 Facebook 登录或 Facebook 对话(或需要切换至原生 Facebook 应用程序或 Safari 的任何操作)的结果进行后置处理,您需要将 AppDelegate
连接到 FBSDKApplicationDelegate
。在 AppDelegate.m
中添加:
// AppDelegate.m #import <FBSDKCoreKit/FBSDKCoreKit.h>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {[[FBSDKApplicationDelegate sharedInstance] application:applicationdidFinishLaunchingWithOptions:launchOptions];return YES; }- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {return [[FBSDKApplicationDelegate sharedInstance] application:applicationopenURL:urlsourceApplication:sourceApplicationannotation:annotation]; }
4:定义fb登陆
4.1用系统的
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>// Add this to the body
@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];// Optional: Place the button in the center of your view.loginButton.center = self.view.center;
//<span data-click-area="main"></span>Facebook“登录”按钮的读取权限
<span data-click-area="main"></span><pre style="" class="_5s-8 prettyprint lang-code prettyprinted"><span class="pln">loginButton</span><span class="pun">.</span><span class="pln">readPermissions </span><span class="pun">=</span><span class="pln"> </span><span class="pun">@[@</span><span class="str">"public_profile"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">@</span><span class="str">"email"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">@</span><span class="str">"user_friends"</span><span class="pun">];</span>
[self.view addSubview:loginButton];} @end 代理:<FBSDKLoginButtonDelegate>
- (void)loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
error:(NSError *)error{
NSString * fbId =result.token.userID;
NSLog(@"token:%@",result.token);
NSLog(@"%@",result.token.userID);
NSLog(@"%@",result.grantedPermissions);
NSLog(@"%@,isCancelled:%zd",result.declinedPermissions,result.isCancelled);
}
4.2自定义登陆
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.UIButton *myLoginButton=[UIButton buttonWithType:UIButtonTypeCustom];myLoginButton.backgroundColor=[UIColor darkGrayColor];myLoginButton.frame=CGRectMake(0,0,180,40);myLoginButton.center = self.view.center;[myLoginButton setTitle: @"My Login Button" forState: UIControlStateNormal];// Handle clicks on the button[myLoginButtonaddTarget:selfaction:@selector(loginButtonClicked) forControlEvents:UIControlEventTouchUpInside];// Add the button to the view[self.view addSubview:myLoginButton];
}
-(void)loginButtonClicked
{
//定义形参(a,b)=^(实参c,实参d);实参是fb服务器返回来的
void(^loginHander)(FBSDKLoginManagerLoginResult *result, NSError *error) = ^(FBSDKLoginManagerLoginResult *result, NSError *error){if (error) {NSLog(@"Process error");} else if (result.isCancelled) {NSLog(@"Cancelled");} else {NSLog(@"Logged in");NSString * fbId =result.token.userID;NSLog(@"token:%@",result.token);NSLog(@"%@",result.token.userID);NSLog(@"%@",result.grantedPermissions);NSLog(@"%@,isCancelled:%zd",result.declinedPermissions,result.isCancelled);}};
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];[loginlogInWithReadPermissions: @[@"public_profile"]fromViewController:selfhandler:loginHander];
}
不解:换用新版的fbsdk登陆后,不管用户有没有安装fb的客户端,都只会登陆网页进行登陆
facebook登陆ios相关推荐
- 杀鸡儆猴!苹果撤销Facebook的iOS企业证书
据外媒报道,自2016年以来,Facebook每个月向13至35岁的用户支付20美元的费用以让他们下载一款名为Facebook Research VPN的应用程序,并收集他们的个人数据如历史.位置信息 ...
- hellojs实现google+facebook登陆
hellojs实现google+facebook登陆 传送门:hellojs in npm
- 一个软件网络连接异常_手机也能玩PC大作了,串流软件Steam Link登陆iOS App Store...
去年V社发布消息宣布,将会推出一款全新的针对智能手机的Steam串流APP,而在近日这个名为Steam Link App终于正式登陆了iOS App Store.玩家可以通过手机和电脑连接,畅玩电脑上 ...
- 谷歌正式宣布其云游戏将以网页应用形式登陆iOS
导读 近日,谷歌正式宣布其云游戏服务 Stadia 将以网页应用的形式登陆苹果 iOS 平台.此举旨在追随微软的脚步,以绕过苹果应用商店的限制. 谷歌表示,该公司始终在开发 Stadia 的网页应用版 ...
- 【Android】google plus、Facebook登陆sdk集成打包出aar的使用步骤
本篇旨在记录aar包的使用步骤(关于aar的打包方法,如果有人需要的话我侯敏敏再补一篇): [arr打包方法:基本思路:在Android Studio中选择file-New Module-Androi ...
- ChatGPT正式登陆iOS平台
6天前,ChatGPT在美区App Store中上架了官方App,累计下载量已经突破 50 万次,OpenAI 的 ChatGPT 应用在上架之后,其热度远超必应聊天等聊天机器人,以及其它使用 GPT ...
- 《经典食人花》windows经典桌面游戏食人花(吃花)登陆iOS,Android啦
App Store:点我下载 Google Play:点我下载 百度盘直接下载APK:点我下载 pc原版下载(xp系统以下才能运行):点我下载 无聊做了一个小时候在win98上玩过的小游戏-食人花(吃 ...
- 第三方登陆实践之基于OAuth的FACEBOOK Web Login(最新版)
第三方登陆实践之基于OAuth的FACEBOOK Web Login(最新版) Facebook 登录简介 Facebook登陆实践 1.首先,登陆[Facebook开发者平台](https://de ...
- iOS开发周报:新一代 iPhone 可能取消耳机插口,Facebook 发布 tvOS SDK
新一代 iPhone 可能为进一步降低机身厚度而取消耳机插口,改用 Lightning 接口.iPhone 6c 传言,2016 年可能迎来两次 iPhone 发布会. 新闻 新一代 iPhone 可 ...
- Flutter集成Google、Facebook等第三方登陆完整流程
前言 国内的登陆一般可以通过极光.友盟等这些第三方平台提供的sdk,实现一键接入.国外的就比较杂了,比如常用的 GitHub.Twitter.apple.Microsoft等, Google 提供了 ...
最新文章
- Java并发,volatile+不可变容器对象能保证线程安全么?!
- C++迟后联编和虚函数表
- 使用HMSegmentedControl实现分段控件
- Mongodb的update操作
- 从零开始nodejs系列文章
- php设置cookie值,PHP如何设置和取得Cookie值
- jsp,servlet交互驱动层实现
- 数据密集型应用系统设计--数据复制
- 计算机组成原理三个相关,计算机组成原理试题3
- QQ互联本地测试【QQ互联第一步】
- .doc文件不显示word图标
- URL.createObjectURL()方法
- 洋酒销售系统的设计与实现(附源码+资料+论文+截图+数据库)
- 用canvas画圆形图片
- 这篇文章让你实现时光机特效的操作
- 新媒体人必知的KOL投放策略
- 几大厂商的hypervisors比较分析
- Mysql的锁以及MVCC解决事务隔离级别
- 纯净IP地址--跨境人的爱恨情仇
- D3D渲染技术之纹理
热门文章
- Ping其他电脑ping不通的解决方法
- linux 脚本 过滤 词,linux学习之shell脚本 - 文本过滤
- idea的工具栏显示
- Exception in thread main java.lang.OutOfMemoryError: Java heap space(Java堆空间内存溢出)解决方法...
- 金山词霸划译功能对IDE的影响
- Linux鼠标断断续续,鼠标断断续续失灵该怎么办
- Maxwell参数化建模
- php下载太慢,迅雷下载速度慢的几种解决方法
- HW2021攻防演练经历碎碎念-见解
- 无线信道的特征——衰落通识介绍