iOS 第三方登录之 新浪微博登录

原创 2015年11月20日 09:51:06

首先下载新浪微博iOS SDK

接入说明以及SDK下载地址为:SDK下载地址

下载的目录下有一个名为“微博iOS平台SDK文档V3.1.1.pdf”文件,里面详细介绍了接入过程。

下面介绍一下自己的接入过程。

1.在appDelegate.m中添加微博代理

#pragma mark ------------- 微博登录 回调 -----------------

- (void)didReceiveWeiboRequest:(WBBaseRequest *)request

{

    

}


- (void)didReceiveWeiboResponse:(WBBaseResponse *)response

{

    if ([responseisKindOfClass:WBAuthorizeResponse.class])

    {

        NSString * userid = [(WBAuthorizeResponse *)responseuserID];

        NSString * wbtoken = [(WBAuthorizeResponse *)responseaccessToken];

        NSString * oathString = [NSStringstringWithFormat:@"https://api.weibo.com/2/users/show.json?uid=%@&access_token=%@",userid,wbtoken];//

        NSMutableString * msg = [NSMutableStringstring];

        if (NO_VALUE(userid)) {

            [msg setString:ALERT_WEIBO_LOGIN_ERROR];

        }

        NSDictionary* para = [NSDictionarydictionaryWithObjectsAndKeys:oathString,@"para",msg,@"msg",nil];

        [[NSNotificationCenterdefaultCenter] postNotificationName:NOTIFICATION_WEIBO_LOGINobject:niluserInfo:para];

        

#if DEBUG

        NSString *message = [NSStringstringWithFormat:@"%@: %d\nresponse.userId: %@\nresponse.accessToken: %@\n%@: %@\n%@: %@",NSLocalizedString(@"响应状态",nil), (int)response.statusCode,[(WBAuthorizeResponse *)responseuserID], [(WBAuthorizeResponse *)responseaccessToken],  NSLocalizedString(@"响应UserInfo数据",nil), response.userInfo,NSLocalizedString(@"原请求UserInfo数据",nil), response.requestUserInfo];

        MyNSLog(@"微博:%@",message);

#endif

    }  

}

2.添加WeiboLoginClass.h文件,内容为:

//

//  WeiboLoginClass.h

//


#import <Foundation/Foundation.h>


@class WeiboLoginClass;


@protocol WeiboLoginDelegate <NSObject>

@required

-(void) WeiboLogin:(WeiboLoginClass*) WeiboLoginClass  Result:(NSDictionary*) resultDic;

@end


@interface WeiboLoginClass : NSObject


@property (assign)id <WeiboLoginDelegate> delegate;

@property (nonatomic,strong)UIViewController * currentVC;


- (instancetype)initWithViewController:(UIViewController*) vc;

- (void) startAuthorize;

@end


添加WeiboLoginClass.m文件,内容为:

//

//  WeiboLoginClass.m

//


#import "WeiboLoginClass.h"


@implementation WeiboLoginClass


- (instancetype)initWithViewController:(UIViewController*) vc

{

    self = [superinit];

    if (self) {

        // Custom initialization

        self.currentVC = vc;

        [[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(getWeiboLoginNoti:)name:NOTIFICATION_WEIBO_LOGINobject:nil];

    }

    return self;

}

-(void) dealloc

{

    [[NSNotificationCenterdefaultCenter] removeObserver:self];

}


-(void) startAuthorize

{

    WBAuthorizeRequest *request = [WBAuthorizeRequestrequest];

    request.redirectURI =WEIBO_REDIRECTURI;

    request.scope = @"all";

    request.userInfo =@{@"SSO_From":@"SendMessageToWeiboViewController",

                         @"Other_Info_1": [NSNumbernumberWithInt:123],

                         @"Other_Info_2": @[@"obj1", @"obj2"],

                         @"Other_Info_3":@{@"key1": @"obj1", @"key2": @"obj2"}};

    [WeiboSDK sendRequest:request];

}


#pragma mark ---------- 微博登录 得到access_token后请求用户信息 --------------

-(void) getWeiboLoginNoti:(NSNotification*) noti

{

    [self.currentVChideHud];

    [[NSNotificationCenterdefaultCenter] removeObserver:self];

    NSString* oath_url = [noti.userInfoobjectForKey:@"para"];

    NSString* msg = [noti.userInfoobjectForKey:@"msg"];

    if (NO_VALUE(msg)) {

        dispatch_async(dispatch_get_main_queue(), ^{

#pragma warning -------------

            NSError *err = nil;

            NSMutableDictionary* dicData = [NSMutableDictionarydictionary];

            err = [requestSyncServer requestSyncServerWithUrl:oath_url withReceiveDic:dicData];

            if (err != nil) {

#if DEBUG

                NSString* errString = [[NSStringalloc] initWithFormat:@"解析数据失败"];

                MyNSLog(@"%@",errString);

#endif

                [self.currentVCshowHint:ALERT_WEIBO_LOGIN_ERROR];

            }else{

                NSString* idstr = [dicData objectForKey:@"idstr"];

                NSString* nickname = [dicData objectForKey:@"screen_name"];

                NSString* avatar = [dicData objectForKey:@"avatar_large"];

                if (!NO_VALUE(idstr) && !NO_VALUE(nickname) && !NO_VALUE(avatar)) {

                    

                    //                NSNumber* typeWeibo = [NSNumber numberWithInteger:3];

                    //                [self.currentVC login2:[idstr lowercaseString] andNickname:nickname andAvatar:avatar andType:typeWeibo];

                    NSDictionary * resultDic = [NSDictionarydictionaryWithObjectsAndKeys:idstr,@"openid",avatar,@"avatar",nickname,@"nickname",nil];

                    [self.delegateWeiboLogin:selfResult:resultDic];

                }

            }

        });

    }else{

        [self.currentVCshowHint:msg];

    }

}

@end


3. 在调起授权的viewcontroller中

#pragma mark ----------- 点击微博登录 --------

- (IBAction)touchWeiboLoginButton:(id)sender {

    MyNSLog(@"点击微博登录");

    self.weibologinclass = [[WeiboLoginClassalloc] initWithViewController:self];

    self.weibologinclass.delegate =self;

    [self.weibologinclassstartAuthorize];

}

#pragma mark

#pragma mark - Weibologindelegate

-(void) WeiboLogin:(WeiboLoginClass *)WeiboLoginClass Result:(NSDictionary *)resultDic

{

    [self.openIDsetString:[resultDic objectForKey:@"openid"]];

    [self.figureurl_qq_2setString:[resultDic objectForKey:@"avatar"]];

    [self.nicknamesetString:[resultDic objectForKey:@"nickname"]];

    [selflogin:self.openIDandNickname:self.nicknameandAvatar:self.figureurl_qq_2];

}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS 微博第三方登录的简单实现

一、下载微博SDK 微博SDK的官方github : https://github.com/sinaweibosdk/weibo_ios_sdk 下载所需要的SDK 二、集成SDK 下载后的SDK文件...
  • japhoo
  • japhoo
  • 2016年04月20日 10:21
  • 3561

IOS新浪微博开发--分享、授权登录

一、准被工作          1.注册成为开发者,创建应用项目,获取APPkey         2.添加 SDK 文件到工程           将从 GitHub 上下载的 lib...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

第三方登录授权说明

名词说明: openid/uid:新浪、腾讯账号对应的唯一ID access_toekn::授权成功后返回的token,用于调用第三方Api AppId:接入第三方应用的唯一ID,在第三方开放平...

IOS新浪微博开发--分享、授权登录

一、准被工作          1.注册成为开发者,创建应用项目,获取APPkey         2.添加 SDK 文件到工程           将从 GitHub 上下载的 libWeib...

iOS开发之第三方登录微博-- 史上最全最新第三方登录微博方式实现

相关资源地址: 本项目demo地址 :   https://github.com/zhonggaorong/weiboSDKDemo 最新SDK下载:  最新微博SDK 官网注册地址:点击打...

在Appdelegate.m中有 多个handleopenURL

判断url的前缀即可,每个SDK的前缀是独一无二的, 可以打印url获取 参考代码: NSString *string =[url absoluteString];          if (...

iOS 微信支付 开发流程

这个文章写的 比较不错 借此转发。  SDK下载:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1 APP端开...

iOS 第三方登录(QQ 微信 新浪微博)

一、QQ登录1、登录腾讯开放平台,创建一个应用,获取APP_KEY和APP_ID2、下载对应的SDK3、下载 iOS SDK环境搭建1、导入SDK,配置工程1、下载SDK到本地后,将SDK拖入工程中2...

iOS:shareSDK 第三方登录(qq 微信 新浪微博)

配置文件: (配置文件或者plist中) TARGETS ->Info ->URL Type    qq需要: tencentopenapi    “tencent"+QQApp_id        ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 第三方登录之 新浪微博登录
举报原因:
原因补充:

(最多只允许输入30个字)