zoukankan      html  css  js  c++  java
  • 使用ShareSDK实现QQ,微信,新浪微博的第三方登录

    1.在ShareSDk注册帐号,并创建应用!获取到AppKey和AppSecret!

    2.到QQ,微信,新浪微博开发者平台注册帐号,并创建应用,获取AppID和AppSecret。

    3.在ShareSDK官网下载SDk包,并将其集成到自己的工程中。

    4.根据官方文档,进行操作。

     

    ①在AppDelegate中导入
    
    #import <ShareSDK/ShareSDK.h>
    
    #import <ShareSDKConnector/ShareSDKConnector.h>
    
     
    
    //腾讯开放平台(对应QQ和QQ空间)SDK头文件
    
    #import <TencentOpenAPI/TencentOAuth.h>
    
    #import <TencentOpenAPI/QQApiInterface.h>
    
     
    
    //微信SDK头文件
    
    #import "WXApi.h"
    
     
    
    //新浪微博SDK头文件
    
    #import "WeiboSDK.h"
    
    ②在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中注册应用。
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
       
    
        /**
    
         *  设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http://mob.com/login 登录后台进行应用注册,
    
         *  在将生成的AppKey传入到此方法中。
    
         *  方法中的第二个第三个参数为需要连接社交平台SDK时触发,
    
         *  在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
    
         *  如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
    
         */
    
        [ShareSDK registerApp:@"ShareSDKAppKey"
    
         
    
              activePlatforms:@[
    
                                @(SSDKPlatformTypeSinaWeibo),
    
                                @(SSDKPlatformTypeWechat),
    
                                @(SSDKPlatformTypeQQ),
    
                                ]
    
                     onImport:^(SSDKPlatformType platformType)
    
         {
    
             switch (platformType)
    
             {
    
                 case SSDKPlatformTypeWechat:
    
                     [ShareSDKConnector connectWeChat:[WXApi class]];
    
                     break;
    
                     
    
                 case SSDKPlatformTypeQQ:
    
                     [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
    
                     break;
    
                     
    
                 case SSDKPlatformTypeSinaWeibo:
    
                     [ShareSDKConnector connectWeibo:[WeiboSDK class]];
    
                     break;
    
                 default:
    
                     break;
    
             }
    
         }
    
              onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo)
    
         {
    
             
    
             switch (platformType)
    
             {
    
                 case SSDKPlatformTypeSinaWeibo:
    
                     
    
                     //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
    
                     [appInfo SSDKSetupSinaWeiboByAppKey:@"AppKey"
    
                                               appSecret:@"appSecret"
    
                                             redirectUri:@"https://api.weibo.com/oauth2/default.html"
    
                                                authType:SSDKAuthTypeBoth];
    
                     break;
    
                     
    
                     //设置微信应用信息
    
                 case SSDKPlatformTypeWechat:
    
                     [appInfo SSDKSetupWeChatByAppId:@"AppId"
    
                                           appSecret:@"appSecret"];
    
                     break;
    
                     
    
                    //设置QQ应用信息,其中authType设置为使用SSO+Web形式授权
    
                 case SSDKPlatformTypeQQ:
    
                     [appInfo SSDKSetupQQByAppId:@"AppId"
    
                                          appKey:@"appKey"
    
                                        authType:SSDKAuthTypeBoth];
    
                     break;
    
                 
    
                 default:
    
                     break;
    
             }
    
         }];
    
        
    
        
    
        self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
        
    
        LoginViewController *loginVC=[[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    
        UINavigationController *NC=[[UINavigationController alloc] initWithRootViewController:loginVC];
    
        self.window.rootViewController=NC;
    
        [_window makeKeyAndVisible];
    
        return YES;
    
    }

    ③在LoginViewController.m中,在按钮的点击事件中分别添加

    - (IBAction)didiClickQQ:(id)sender {
    
        
    
        //QQ的登录
    
        [ShareSDK getUserInfo:SSDKPlatformTypeQQ
    
               onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
    
         {
    
             if (state == SSDKResponseStateSuccess)
    
             {
    
                 
    
                 NSLog(@"uid=%@",user.uid);
    
                 NSLog(@"%@",user.credential);
    
                 NSLog(@"token=%@",user.credential.token);
    
                 NSLog(@"nickname=%@",user.nickname);
    
             }
    
             
    
             else
    
             {
    
                 NSLog(@"%@",error);
    
             }
    
             
    
         }];
    
        
    
    }
    
     
    
    /**
    
     *  微信
    
     *
    
     *  @param sender <#sender description#>
    
     */
    
    - (IBAction)didClickWeChat:(id)sender {
    
        
    
        //微信的登录
    
        [ShareSDK getUserInfo:SSDKPlatformTypeWechat
    
               onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
    
         {
    
             if (state == SSDKResponseStateSuccess)
    
             {
    
                 
    
                 NSLog(@"uid=%@",user.uid);
    
                 NSLog(@"%@",user.credential);
    
                 NSLog(@"token=%@",user.credential.token);
    
                 NSLog(@"nickname=%@",user.nickname);
    
             }
    
             
    
             else
    
             {
    
                 NSLog(@"%@",error);
    
             }
    
             
    
         }];
    
       
    
        
    
        
    
    }
    
     
    
    /**
    
     *  微博
    
     *
    
     *  @param sender <#sender description#>
    
     */
    
     
    
    - (IBAction)didClickWeiBo:(id)sender {
    
        
    
        //微博的登录
    
        [ShareSDK getUserInfo:SSDKPlatformTypeSinaWeibo
    
               onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
    
         {
    
             if (state == SSDKResponseStateSuccess)
    
             {
    
                 
    
                 NSLog(@"uid=%@",user.uid);
    
                 NSLog(@"%@",user.credential);
    
                 NSLog(@"token=%@",user.credential.token);
    
                 NSLog(@"nickname=%@",user.nickname);
    
             }
    
             
    
             else
    
             {
    
                 NSLog(@"%@",error);
    
             }
    
             
    
         }];
    
     
    
        
    
    }

     

    好了,到这里,官方文档上给的内容就全部添加完毕了。接下来运行,发现可以进入到qq,微信,但是输入对应的帐号,却不能正常登录。而微博直接就崩掉了。

    由于现在更新到iOS9,与之前有很多不同的地方,接下来的这些设置很重要!

     

    在URLType下添加对应的appID

    因为ios只支持https协议,所以,在info.plist添加如下类,使应用退回到http。

     

    这里也要修改,否则微博登录会崩!

     

    接近尾声了,接下来,在QQ,微信,微博开发者平台里添加测试帐号。

     

    忘了一步,添加白名单

    <key>LSApplicationQueriesSchemes</key>
    <array>
    <string>mqqOpensdkSSoLogin</string>
    <string>sinaweibo</string>
    <string>mqq</string>
    <string>mqqapi</string>
    <string>mqqopensdkapiV3</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqapiwallet</string>
    <string>mqqwpa</string>
    <string>mqqbrowser</string>
    <string>weixin</string>
    <string>wechat</string>
    </array>

    然后就可以运行在自己的真机上了!

    效果图:

     

     

     

     

     

     

     

     

     

     

    一个人,一片天,一条路,一瞬间!
  • 相关阅读:
    谈薪资
    测试工程师 技能要求:java编程,数据库,linux操作系统,自动化测试开发,性能测试,安全测试
    测试工程师 工作要求
    python有木有哪些必须要学习的高级模块
    jmeter 网速
    fiddler抓包https
    做性能测试时如何实时监测服务器或接口性能???
    [drp 3]读取Xml配置文件,连接数据库
    [drp 2]String、StringBuffer和StringBuilder的区别
    SQL 1:常用SQL语句
  • 原文地址:https://www.cnblogs.com/zcl410/p/4942643.html
Copyright © 2011-2022 走看看