zoukankan      html  css  js  c++  java
  • iOS开发中 实现登录时关于使用QQ做为第三方授权登录的问题

    注意:QQ本身没有授权功能,所以想要使用QQ做第三方登录必须通过QQ空间来实现!

    第一步:集成ShareSDK(步骤同集成分享的一样,如果已经集成过就不用再重新集成了),这里需要注意的是,由于是要通过QQ空间来实现授权登录,所以在下载ShareSDK包的时候别忘了勾选QQ空间,不然会报尚未导入平台(6)的错误。

    第二步:打开工程中的*AppDelegate.m(*代表你的工程名字)
文件,导入QQSDK的头文件:
                #import <TencentOpenAPI/QQApiInterface.h>
                #import <TencentOpenAPI/TencentOAuth.h>

           检查是否已加入handleOpenURL的处理方法,如果没有则添加如下代码:
    - (BOOL)application: (UIApplication *)application  handleOpenURL: (NSURL *)url
    {
        return [ShareSDK handleOpenURL:url
                                wxDelegate:self;
    }

    -
     (BOOL)application: (UIApplication *)application
                    openURL: (NSURL *)url
                    sourceApplication: (NSString *)sourceApplication
                    annotation: (id)annotation
    {
        return [ShareSDK handleOpenURLurl
                       sourceApplication:sourceApplication
                       annotationannotation
                       wxDelegateself;
    }    
    第三步: 加入QQ空间初始化方法
       在*AppDelegate.m里面的
    (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions{}方法中
    //初始化我们的sdk

    [ShareSDK registerApp@"iosv1101"];
    //添加QQ空间应用
    [ShareSDK connectQZoneWithAppKey:@"100371282"
                                appSecret:@"aed9b0303e3ed1e27bae87c33761161d"
                       qqApiInterfaceCls:[QQApiInterface class]
                         tencentOAuthCls:[TencentOAuth class];

    注意:这里需要填入的AppKey就是您在QQ互联注册应用的AppID,appSecret就是AppKey!

    第四步:配置QQ空间的URL Schemes

        打开*-Info.plist(*代表你的工程名字)。找到URL types配置项(如果没有则新增),展开URL types – URL Schemes,在URL Schemes下分别各新增一项用于QQ空间的Scheme(如果不添加则会导致法返回应用)。其填写格式为:tencent+appID(你在QQ空间中申请的AppId), 如:tencent100371282。

    第五步:授权登录并获取用户信息

        在您的点击事件方法中加入授权获取用户信息接口:

    [ShareSDK getUserInfoWithType:ShareTypeQQSpace
                                      authOptions:nil
                                                 result:^(BOOL result, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {
                                   
                                   if (result)
                                   
    {                  
                                  //打印输出用户uid:                                 

                                       NSLog(@"uid = %@",[userInfo uid]);
                                 //打印输出用户昵称:
                                       NSLog(@"name = %@",[userInfo nickname]);
                                //打印输出用户头像地址:
                                       NSLog(@"icon = %@",[userInfo profileImage]);

    }else{


         NSLog(@"授权失败!error code == %d, error code == %@", [error errorCode], [error errorDescription]);
      

    }];
    注意:ShareTypeQQSpace这里一定是写QQSpace不能写QQ否则会报 不支持授权功能的错误。
               这里只在result里面做了输出的操作 如果您想要做存储数据或者其它显示都可以在这里面操作!

  • 相关阅读:
    MySQL + Atlas --- 部署读写分离(实现,其他的技术有参考文档)
    基于Redis、Storm的实时数据查询实践
    Redis 配置
    Redis 安装
    redis简介
    Java-Enumeration总结
    spring源码剖析(四)自定义标签解析流程
    svn 把主干合到分支 分支合到主干
    关于Class.getResource和ClassLoader.getResource的路径问题
    instanceof, isinstance,isAssignableFrom的区别
  • 原文地址:https://www.cnblogs.com/guiyangxueyuan/p/5447665.html
Copyright © 2011-2022 走看看