iOS第三方登录大全(下)

Facebook、Twitter、Google+接入

Facebook接入

官方文档

接入文档

App平台和具体平台接入流程

2.1 在配置文件Info.plist中配置应用白名单,必须添加以下所有字段,否则可能无法跳转

    LSApplicationQueriesSchemes
    
    fbapi
    fb-messenger-api
    fbauth2
    fbshareextension
    

2.2 点击XCode项目名,选择Info,添加FaceBook的URL Types

identifier:fb URL Schemes:fb前缀后+FaceBook App ID(用户自己申请的账号)

2.3 Appdelegate中的配置


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //facebook
    [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
    [FBSDKSettings setAppID:Facebook_APP_ID];

      return YES;
}
// 2
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    return  
    [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]
}
// 3
- (void)applicationDidBecomeActive:(UIApplication *)application {

    [FBSDKAppEvents activateApp];
}

2.4 工具类中构造loginFacebook方法

- (void)loginFacebookSuccess:(UIViewController *)viewController success:(void (^)(id response))successBlock failure:(void (^)(NSError *error))failureBlock{
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    [login  logInWithReadPermissions: @[@"public_profile"]
     fromViewController:viewController
     handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
         if (error) {
             NSError *error = [CIAccountError createError:ErrorThirdLoginFailure];
             failureBlock(error);
         } else if (result.isCancelled) {
             NSError *error = [CIAccountError createError:ErrorThirdLoginCancel];
             failureBlock(error);
         } else {
             NSString *token = result.token.tokenString;
             FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                           initWithGraphPath:result.token.userID
                                           parameters:nil
                                           HTTPMethod:@"GET"];
             [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                                   id result,
                                                   NSError *error) {
                 if (error) {
                     NSError *resultError = [CIAccountError createError:ErrorThirdLoginFailure];
                     failureBlock(resultError);
                 }else{
                     NSString *nickName = [result objectForKey:@"name"];
                     NSString *openId = [result objectForKey:@"id"];
                     NSDictionary *resultDic = @{@"openid":openId,
                                                 @"nickname":nickName,
                                                 @"account_type":@"facebook",
                                                 @"access_token":token,
                                                 @"third_appid":Facebook_APP_ID};
                     successBlock(resultDic);
                 }
                 
             }];
         }
     }];
}

2.5 登录时调用loginFacebook方法

 [thirdLoginUtil loginFacebookSuccess:self success:^(id response) {
            //获取数据实现客户端登录
            } failure:^(NSError *error) {
                [self ShowExclaHud:error.localizedDescription];
            }];

Twitter接入

官方文档

接入文档

App控制台

2.1 点击XCode项目名,选择Info,添加twitter的URL Types

identifier:twitter URL Schemes:Twitter App ID(用户自己申请的账号)

2.2 Appdelegate中的配置


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   //twitter
    [[Twitter sharedInstance] startWithConsumerKey:Twitter_APP_KEY consumerSecret:Twitter_APP_SECRET];

      return YES;
}

2.3 在工具类中构造loginTwitter方法

- (void)loginTwitterSuccess:(void (^)(id response))successBlock failure:(void (^)(NSError *error))failureBlock{
    [[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {

        if (session) {
            NSString *token = session.authToken;
            NSString *openId = session.userID;
            NSString *nickName = session.userName;
           
            if (token && openId && nickName) {
              
                NSDictionary *resultDic = @{@"openid":openId,
                                            @"nickname":nickName,
                                            @"account_type":@"twitter",
                                            @"access_token":token,
                                            @"third_appid":Twitter_APP_KEY};
                successBlock(resultDic);
                
            }
            else{
                NSError *resultError = [CIAccountError createError:ErrorThirdLoginFailure];
                failureBlock(resultError);
            }
            
           
        }else
        {NSError *resultError = [CIAccountError createError:ErrorThirdLoginFailure];
            failureBlock(resultError);
        }
    }];
}

2.4登录时调用loginTwitter方法

[thirdLoginUtil loginTwitterSuccess:^(id response) {
     //获取数据实现客户端登录
            } failure:^(NSError *error) {
                [self ShowExclaHud:error.localizedDescription];
            }];

2.5 tips

注册时一定要填回调地址

Google+接入

官方文档

接入文档

2.1 在配置文件Info.plist中配置应用白名单,必须添加以下所有字段,否则可能无法跳转

    LSApplicationQueriesSchemes
    
    com.google.gppconsent.2.4.1
    com.google.gppconsent.2.4.0
    com.google.gppconsent.2.3.0
    com.google.gppconsent.2.2.0
    com.google.gppconsent
    hasgplus4
    googlechrome-x-callback
    googlechrome
    

2.2 点击XCode项目名,选择Info,添加Google的URL Types

identifier: google URL Schemes:com.googleusercontent.apps.前缀后+FaceBook App ID(用户自己申请的账号)

2.3 Appdelegate中的配置


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 //google
    [GIDSignIn sharedInstance].clientID = Google_APP_ID;

      return YES;
}
// 2
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    return  
    [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation];
}

2.4 在登录中输入代码

[[GIDSignIn sharedInstance] signIn];

2.5 实现google+代理

#pragma mark - GIDSignInDelegate
- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error
{
    if (error) {
        [self ShowExclaHud:@"授权失败"];
    }else
    {
        NSString *token = user.authentication.idToken;
        NSString *openId = user.userID;
        NSString *nickname = user.profile.name;
        NSDictionary *resultDic = @{@"openid":openId,
                                    @"nickname":nickname,
                                    @"account_type":@"google",
                                    @"access_token":token,
           
                                    @"third_appid":Google_APP_ID};
        //获得返回数据resultDic实现客户端登录

        
    }
}

- (void)signIn:(GIDSignIn *)signIn didDisconnectWithUser:(GIDGoogleUser *)user withError:(NSError *)error{
    if (error) {
        [self ShowExclaHud:@"授权失败"];
    }else{
        NSString *token = user.authentication.idToken;
        NSString *openId = user.userID;
        NSString *nikeName = user.profile.name;
        NSDictionary *resultDic = @{@"openid":openId,
                                    @"nikename":nikeName,
                                    @"account_type":@"google",
                                    @"access_token":token,
                                    @"third_appid":Google_APP_ID};
       //获得返回数据resultDic实现客户端登录
        
        
    }
}


- (void)presentSignInViewController:(UIViewController *)viewController {
    [self presentViewController:viewController animated:YES completion:nil];
}

你可能感兴趣的:(iOS第三方登录大全(下))