国外第三方登录之facebook(登录,获取用户信息,朋友列表等)含演示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jueyi1127/article/details/77983016

demo地址:http://download.csdn.net/download/jueyi1127/9979107

记得先翻墙,哈哈。

一个facebooK接入和登录官方文档

https://developers.facebook.com/docs/facebook-login/ios


iOS版Facebook登录 - 快速入门

通过Facebook登录您的应用时间,用户可以向应用授予权限,以便您可以检索信息或以用户的身份在Facebook执行操作。

以下步骤用于将Facebook登录添加到您的iOS Objective-C项目中。要将Facebook登录添加到Swift项目,请参阅Swift中的Facebook登录 - 新手入门

选择应用或新建应用

选择应用或新建应用,将应用相关信息输入以下代码片段。

2.设置开发环境吨

在使用iOS版Facebook登录之前,先设置您的开发环境。

2a。下载iOS版Facebook SDK

下载SDK并将存档解压到   〜/文档/ FacebookSDK。 (  
注意,这是目标C版SDK关于夫特,请参阅。   夫特版Facebook的登录-入门指南)。

2b。向Xcode项目添加登录工具包

  1. 打开应用的Xcode项目。
  2. 如果你的项目中没有  框架(框架)组,请创建一个。
  3. 打开  ~/Documents/FacebookSDK
  4. 将  FBSDKLoginKit 拖放至项目导航器内的  Frameworks
  5. 在项目中打开Xcode的  构建设置(构建设置)选项卡。
  6. 将  ~/Documents/FacebookSDK 添加到项目的  框架搜索路径

您使用Facebook SDK时,如果未禁用事件自动记录功能,应用事件将被自动记录和收集,用于Facebook分析。关于哪些信息会被收集以及如何禁用事件自动记录的详细信息,请参阅应用事件自动记录

3.在Facebook注册和配置您的应用程序

注册和配置您的应用,以便能够使用Facebook登录功能。

3a。添加包ID

在Xcode项目的iOS应用对象中,找到Bundle ID,并将其粘贴到下面的方框内。
捆绑ID
您可以在今后通过设置页面的iOS版块更改Bundle ID。
com.txtws.greenbox

图3b。为应用启用单点登录

启用单点登录
将单点登录设置为“是”,即可为应用启用单点登录,如下所示。
单点登录 将从iOS通知中启动

配置信息

在Xcode项目的“支持文件”(支持文件)文件夹中找到   .plist  文件。
  1. 右键点击  .plist 文件,然后选择“打开源代码”(作为源代码打开)。
  2. 将下列XML代码片段复制并粘贴到文件正文中(<dict>...</dict>)。
    <键> CFBundleURLTypes </键> <阵列> <字典> <键> CFBundleURLSchemes </键> <阵列> <字符串> fb452454368463124 </字符串> </阵列> </字典> </阵列> <键> FacebookAppID < / key> <string> 452454368463124 </ string> <key> FacebookDisplayName </ key> <string> Graybox </ string>
    
      
      
      
        
      
      
    
    
    
    
    
    复制代码
  3. 如果您使用任何Facebook对话框(例如:登录,分享,应用邀请等),以便从您的应用切换至Facebook应用,则您应用的  .plist 还必须处理以下代码。
    <key> LSApplicationQueriesSchemes </ key> <array> <string> fbapi </ string> <string> fb-messenger-api </ string> <string> fbauth2 </ string> <string> fbshareextension </ string> </ array >
    
      
      
      
      
    
    复制代码

5.连接应用委托

对于需要切换到原生Facebook应用或Safari的操作(例如Facebook登录或Facebook对话框等),要对结果做后处理,您需要将   AppDelegate 类关联到   FBSDKApplicationDelegate对象。要实现这一操作,请将以下代码添加到   AppDelegate.m 文件。
// AppDelegate.m #import <FBSDKCoreKit / FBSDKCoreKit.h>


- BOOL 应用程序:( UIApplication *)应用程序  
    didFinishLaunchingWithOptions :( NSDictionary *)launchOptions { 
  
  [[ FBSDKApplicationDelegate sharedInstance ] 应用程序应用程序
    didFinishLaunchingWithOptions launchOptions ]; //在此添加任意自定义逻辑返回YES ; }
  
  


- BOOL 应用程序:( UIApplication *)应用程序openURL :( NSURL *)url  
    sourceApplication :( NSString *)sourceApplication annotation :( id annotation { 

  BOOL processed = [[ FBSDKApplicationDelegate sharedInstance ] application application 
    openURL url
    sourceApplication sourceApplication
    注释注释
   ]; //在此添加任意自定义逻辑返回处理; }
  
  
 
    
复制代码

将Facebook登录功能添加到代码中

在您的iOS应用中添加Facebook登录按钮。

将Facebook登录功能添加到代码中

要向应用添加具有Facebook品牌特征的“登录”按钮,请将下列代码片段添加至视图控制器。
//将下列代码添加到文件标头中,例如:在ViewController.m中//置于#import“ViewController.h”之后#import <FBSDKCoreKit / FBSDKCoreKit.h> #import <FBSDKLoginKit / FBSDKLoginKit.h>




//将以下代码添加到正文@implementation ViewController
 

- void viewDidLoad { [ super viewDidLoad ]; FBSDKLoginButton * loginButton = [[ FBSDKLoginButton alloc ] init ]; //或者:将按钮放在视图的中间位置
  。loginButton 中心= 自我视图中心; [ 自我查看addSubview loginButton ]; } 
  
    
   
  


@结束
复制代码

图6b。检查当前登录状态

应用一次只能允许一位用户登录。会我们以   [FBSDKAccessToken currentAccessToken]代表登录应用的每位用户。
FBSDKLoginManager 将为您设置此口令,并在设置   currentAccessToken 时,还会自动将口令写入钥匙串缓存。
FBSDKAccessToken 包含   userID,您可以使用此编号识别用户。如果需要额外的个人主页信息,请参阅 个人主页部分。
您应该更新视图控件,在加载时便检查当前口令。如果用户已经向您的应用授权权限,此操作就会减少不必要的“应用切换至Facebook”流程:
- void viewDidLoad
 { [ super viewDidLoad ]; 如果([ FBSDKAccessToken currentAccessToken ]){ //用户已登录,采取前往下一个视图控制器等操作。} } 
  
    
   
  
复制代码

6C。请求权限

添加Facebook登录后,您的应用就可以向用户请求一些数据的权限。
Facebook的“登录”按钮的读取权限
对于Facebook“登录”按钮( FBSDKLoginButton),可使用   readPermissions 属性请求附加的读取权限。
在视图头文件中添加:
// ViewController.h #进口<FBSDKLoginKit / FBSDKLoginKit.h> @interface 的ViewController 的UIViewController @property 非原子IBOutlet中FBSDKLoginButton * loginButton ; @结束

  
    
复制代码
在视图文件中添加:
      
//扩展“7.添加Facebook登录按钮代码”中提供的代码示例//在viewDidLoad方法中:
loginButton readPermissions = @ [@ “public_profile” @ “email” @ “user_friends” ];
 
    
复制代码
现在,您的应用即可请求用户的电子邮箱和好友列表。

7.后续步骤

恭喜,您已经成功地向iOS应用添加了Facebook登录功能!请务必参阅文档的其他内容,获取更多进阶指南。

二facebooK自定义登录按钮

https://developers.facebook.com/docs/facebook-login/ios/advanced


[objc]  查看纯 文本  
  1. //自定义登陆按钮  
  2. - (void )customLogin  
  3. {  
  4.     UIButton  * myLoginButton = [UIButton  buttonWithType :UIButtonTypeCustom];  
  5.     myLoginButton .backgroundColor = [UIColor  darkGrayColor ];  
  6.     myLoginButton .frame = CGRectMake();  
  7.    // myLoginButton.center = self.view.center;  
  8.     [myLoginButton  setTitle :  @“我的登录按钮”  forState  UIControlStateNormal ];  
  9.       
  10.     //处理按钮上的点击  
  11.     [myLoginButton  
  12.      addTarget self  
  13.      动作@selector (loginButtonClicked) forControlEvents :UIControlEventTouchUpInside];  
  14.       
  15.     //将按钮添加到视图  
  16.     [ self .view  addSubview :myLoginButton];  
  17. }  
  18. // @ [@“public_profile”,@“email”,@“user_friends”]; 您的应用即可请求用户的电子邮箱和好友列表。  
  19. - (void )loginButtonClicked  
  20. {  
  21.     FBSDKLoginManager  * login = [[FBSDKLoginManager  alloc  init ];  
  22.     [login  logOut ]; ////这个一定要写,不然会出现换一个帐号就无法获取信息的错误  
  23.     [登录  
  24.      logInWithReadPermissions :@ [ @“public_profile” ]  
  25.      fromViewController self  
  26.      处理程序:^(FBSDKLoginManagerLoginResult  * result,  NSError  * error){  
  27.          if  (error){  
  28.              NSLog(@“Process error” );  
  29.          }  else if  (result .isCancelled ){   
  30.              NSLog(@“已取消” );  
  31.          }  else  {  
  32.              NSLog(@“登录” );  
  33.                
  34.              [ self  getUserInfoWithResult :result];  
  35.              [ self  getUserListWithResult :result];  
  36.          }  
  37.     

三   Facebook的可以获取的权限

https://developers.facebook.com/docs/facebook-login/permissions


四facebook获取用户信息

[objc]  查看纯 文本  
  1. //获取用户信息图片用户头像  
  2. - (void )getUserInfoWithResult :( FBSDKLoginManagerLoginResult  *)结果  
  3. {  
  4.     NSDictionary * params = @ { @“fields” @“id,name,email,age_range,first_name,last_name,link,gender,locale,picture,timezone,updated_time,verified” };  
  5.       
  6.     FBSDKGraphRequest  * request = [[FBSDKGraphRequest  alloc ]  
  7.                                   initWithGraphPath :result .token .userID  
  8.                                   参数:params  
  9.                                   HTTPMethod @“GET” ];  
  10.     [request  startWithCompletionHandler :^(FBSDKGraphRequestConnection  * connection,  id  result,  NSError  * error){  
  11.                         NSLog(@“%@” ,result);  
  12.         / * 
  13.          { 
  14.          “age_range”= { 
  15.          min = 21; 
  16.          }; 
  17.          “first_name”=“\ U6dd1 \ U5a1f”; 
  18.          性别=女性 
  19.          id = 320561731689112; 
  20.          “last_name”=“\ U6f58”; 
  21.          link =“https://www.facebook.com/app_scoped_user_id/320561731689112/”; 
  22.          locale =“zh_CN”; 
  23.          name =“\ U6f58 \ U6dd1 \ U5a1f”; 
  24.          picture = { 
  25.          data = { 
  26.          “is_silhouette”= 0; 
  27.          url =“https://fb-sca.akamaihd.net/h-ak-fbx/v/t1.0-1/p50x50/18157158_290358084709477_3057447496862917877_n.jpg?oh=01ba6b3a5190122f3959a3f4ed553ae8&oe=5A0ADBF5&__gda__=1509731522_7a226b0977470e13b2611f970b6e2719”; 
  28.          }; 
  29.          }; 
  30.          时区= 8; 
  31.          “updated_time”=“2017-04-29T07:54:31 + 0000”; 
  32.          已验证= 1; 
  33.          } 
  34.          * /  
  35.     }];  
  36. }  


五Facebook获取朋友列表

[objc]  查看纯 文本  
  1. //获取朋友列表  
  2. - (void )getUserListWithResult :( FBSDKLoginManagerLoginResult  *)结果  
  3. {  
  4.     的NSString  *标记= [FBSDKAccessToken  currentAccessToken .tokenString ;  
  5.     NSLog(@“%@” ,令牌);  
  6.     FBSDKGraphRequest  * requestT = [[FBSDKGraphRequest  alloc ]  
  7.                                    initWithGraphPath :[NSString  stringWithFormat @“%@ / friends” ,result .token.userID ]  
  8.                                    参数:@ { @“fields” @“uid” }  
  9.                                    HTTPMethod @“GET” ];  
  10.     [requestT  startWithCompletionHandler :^(FBSDKGraphRequestConnection  * connection,  
  11.                                            id  结果,  
  12.                                            NSError  *错误){  
  13.         NSLog(@“friends:%@” ,result);  
  14.         / * 
  15.          { 
  16.          data =( 
  17.          ); 
  18.          summary = { 
  19.          “total_count”= 314; 
  20.          }; 
  21.          } 
  22.          * /  
  23.     }];  
  24. }  

猜你喜欢

转载自blog.csdn.net/jueyi1127/article/details/77983016