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开发之第三方登录微博-- 史上最全最新第三方登录微博方式实现

相关资源地址: 本项目demo地址 :   https://github.com/zhonggaorong/weiboSDKDemo 最新SDK下载:  最新微博SDK 官网注册地址:点击打...
  • zhonggaorong
  • zhonggaorong
  • 2016年06月21日 15:39
  • 10156

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

一、准被工作          1.注册成为开发者,创建应用项目,获取APPkey         2.添加 SDK 文件到工程           将从 GitHub 上下载的 lib...
  • happyrabbit456
  • happyrabbit456
  • 2015年04月14日 10:33
  • 1684

OpenID和OAuth的区别

我浏览一般网站时,特别是那些创业项目网站,除非能用OpenID登录,包括Google/Yahoo/Sina/Renren/QQ等,否则我一般不会去注册和登陆,太麻烦了。感觉OpenID这个东西很实用方...
  • max2005
  • max2005
  • 2012年05月31日 16:58
  • 3403

新浪微博请求授权显示错误页面的解决方法((error:invalid_request) )

新浪微博请求授权显示错误页面的解决方法((error:invalid_request) )
  • walle0513
  • walle0513
  • 2016年05月27日 11:17
  • 4113

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

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

ios 微博第三方登录及得到相关参数

1.实现微博第三方登录,首先要在”新浪开发者平台”注册,登录。http://open.weibo.com2.创建应用: 微连接->立即创建微连接->移动应用->填写资料(教程可以去以下网址下载)ht...
  • TXWSLJH
  • TXWSLJH
  • 2015年10月28日 09:48
  • 960

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

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

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

首先下载新浪微博iOS SDK 接入说明以及SDK下载地址为:SDK下载地址 下载的目录下有一个名为“微博iOS平台SDK文档V3.1.1.pdf”文件,里面详细介绍了接入过程。 下面介绍一下自己的接...
  • liyun123gx
  • liyun123gx
  • 2015年11月20日 09:51
  • 2723

ios 新浪微博和微信的登录与分享

  • 2015年01月14日 15:25
  • 24.39MB
  • 下载

PHP第三方登录之微博登录并获取用户信息

PHP第三方登录之微博登录并获取用户信息 大家好,我是Yangrl. 在做完PHP注册登录之后,就想尝试接入第三方登录,因为QQ需要域名备案啊,审核啊blablabla,所以就先实现微博登录,没那...
  • YAruli
  • YAruli
  • 2018年01月09日 23:57
  • 64
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 第三方登录之 新浪微博登录
举报原因:
原因补充:

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