连接微博

链接 

1.进入微博开放平台的微连接,创建应用

2.获取App Key:App Secret:

3.设置授权回调页:取消授权回调页:


代码实现流程:

1.创建webView,设置代理,实现协议方法

2.首先访问授权接口Oauth2/authorize接口

https://api.weibo.com/oauth2/authorize?client_id=App Key&redirect_uri=回调页面的网址&display=mobile

3.构建请求

webView加载

_webView= [[UIWebViewalloc]initWithFrame:self.view.bounds];

_webView.delegate=self;

[self.view addSubview:_webView];

NSURL*url = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.weibo.com/oauth2/authorize?client_id=%@&redirect_uri=%@&display=mobile",kAPPKey,kRedirect_uri]];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[_webView loadRequest:request];

4.用户登录

在协议方法将要开始加载一个请求时

返回一个授权连接点击授权

授权服务器返回一个连接连接中包含(redirect_uri+code)

输出:http://www.new.com/?code=869f51c8f3dfd223824606808059fa50

请求授权完成后执行shouldStartLoadWithRequest判断是否返回code

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

NSLog(@"即将加载的请求路径-- %@",request.URL.absoluteURL);

NSString *str = request.URL.absoluteString;

NSRange range = [str rangeOfString:@"?code"];

//发现str中有没有code

if(range.location!=NSNotFound) {

//获取到code

//拆分找code的码

NSArray *array = [str componentsSeparatedByString:@"="];

NSString *code =[array lastObject];

NSLog(@"%@",code);

//创建请求管理类

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

NSString *urlStr =@"https://api.weibo.com/oauth2/access_token";

NSDictionary *dic = @{@"client_id":kAPPKey, @"client_secret":kAPPSecret, @"grant_type":@"authorization_code", @"code":code, @"redirect_uri":kRedirect_uri};

manager.responseSerializer.acceptableContentTypes= [NSSet setWithObject:@"text/plain"];

[manager POST:urlStrparameters:dicconstructingBodyWithBlock:^(id_NonnullformData) {

}progress:^(NSProgress*_NonnulluploadProgress) {

}success:^(NSURLSessionDataTask*_Nonnulltask,id_NullableresponseObject) {

NSLog(@"responseObject ---> %@",responseObject);

[NSUserDefaults standardUserDefaults] setObject:<#(nullable id)#> forKey:<#(nonnull NSString *)#>

}failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror) {

NSLog(@"error -- %@",error);

}];

}

returnYES;

根据code构建一次请求

请求结束方法中获取access token


#import"ViewController.h"

#import"AFNetworking.h"

#define kAPPKey @"0000000000"

#define kAPP_Secret @"be7b7d29791adeca9000c7a174580d3e"

#define kRedirect_uri @"http://baidu.com"

@interfaceViewController(){

UIWebView *_webView;

}

@end

@implementationViewController

- (void)viewDidLoad {

[super viewDidLoad];

_webView= [[UIWebView alloc] initWithFrame:self.view.frame];

_webView.delegate = self;

[self.view addSubview:_webView];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api.weibo.com/oauth2/authorize?client_id=%@&redirect_uri=%@&display=mobile",kAPPKey,kRedirect_uri]]];

[_webView loadRequest:request];

/*

NSString *str =@"abcdefghijklmnopqrstuvwxyz";

//范围:o后面的部分

NSRange range = [strrangeOfString:@"o"];

NSString *last = [NSString stringWithFormat:@"%ld",range.location];

NSLog(@"%@",last);//14

//拆分

NSArray *arr = [str componentsSeparatedByString:@"o"];

NSLog(@"%@",[arr lastObject]);//pqrstuvwxyz

NSLog(@"%@",[arr firstObject]);//abcdefghijklmn

*/

}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

NSLog(@"---->%@",request.URL.absoluteURL);

NSString *str = request.URL.absoluteString;

NSRange range = [str rangeOfString:@"?code"];

//?code后面的部分存在的话,就进入下面的方法

if(range.location != NSNotFound) {

//停止加载不用进入回调页面

[_webView stopLoading];

//拆分

NSArray *array = [str componentsSeparatedByString:@"="];

//拿出=后面的部分

NSString *code = [array lastObject];

//请求路径

NSString *url =@"https://api.weibo.com/oauth2/access_token";

//封装参数

NSDictionary *parma = @{@"client_id":kAPPKey, @"client_secret":kAPP_Secret, @"grant_type":@"authorization_code", @"code":code, @"redirect_uri":kRedirect_uri};

//获得网络管理

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

//设置适合AFNetWorking的响应头

manager.responseSerializer.acceptableContentTypes= [NSSet setWithObject:@"text/plain"];

//连接

[manager POST:url parameters:parma progress:^(NSProgress *_NonnulluploadProgress) {

}success:^(NSURLSessionDataTask *_Nonnulltask,id_NullableresponseObject) {

NSLog(@"responseObject ---> %@",responseObject);

//            responseObject ---> {

//                "access_token" = "2.00hMyWODWC__mD6a71a50f91CfpNwB";

//                "expires_in" = 157670000;

//                "remind_in" = 157670000;

//                uid = 2963125123;

//            }

//本地数据持久化存储数据:方便后面取出使用

//1.属性列表的方式plist文件轻量级的数据涉及到的主要的类NSUserDefaultsv

[[NSUserDefaults standardUserDefaults] setObject:[response ObjectobjectForKey:@"access_token"] forKey:@"access_token"];

}failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror) {

NSLog(@"error --- %@",error);

}];

}

return YES;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • AFNNetworking 2.0你相信你一定知道AFNNetworking,不知道你还可以看看该作者的博文,所以...
    瞎嘚嘚阅读 675评论 1 1
  • 1.在开发的时候可以创建一个工具类,继承自我们的AFN中的请求管理者,再控制器中真正发请求的代码使用自己封装的工具...
    红楼那一场梦阅读 3,471评论 2 3
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,361评论 0 6
  • 1.不可变数组转变为可变数组声明实例变量的数组 必须记得实现 对于遍历数组找到对象后 如果还需要查找 记得先结束 ...
    小新xin阅读 685评论 0 1
  • http://www.cnblogs.com/mddblog/p/5281748.html 一、整体介绍 UIWe...
    F麦子阅读 1,212评论 0 2