美文网首页
连接微博

连接微博

作者: nothing_c | 来源:发表于2016-10-28 01:37 被阅读12次

链接 

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;

}

相关文章

  • 连接微博

    链接 1.进入微博开放平台的微连接,创建应用 2.获取App Key:App Secret: 3.设置授权回调页:...

  • The powerful energy of sky

    舞蹈,旅行, 爱,艺术,疗愈 。连接你的心,便是连接幸运。 微信公众号/简书/新浪微博/图虫:空舞在路上 VUE ...

  • 成长营D9 榜样的力量2018-01-23

    04-Diana 榜样是所有能阅读的人事物。 简单版作业: 1、Grace:从潇洒姐微博点赞连接到Grace的微博...

  • mob中ShareSDK分享总结

    以微信,微博,QQ为例:分享连接:http://wiki.mob.com/快速集成指南/1: 下载ShareSDK...

  • 以人为主与以兴趣为主的差异思考

    我们害怕庸俗,更害怕孤独。 微博是以人为连接点的开放化传播,话题也由中心化人物的传播而放大。微信是以人为连接点的半...

  • swift 自动识别处理连接、电话号码、@ 等的 View

    在iOS开发中经常会有这样的需求,自动识别连接、电话号码等。而且把识别的连接显示成网页连接的形式,比如微博。下面看...

  • 微博运营经验谈

    新浪微博作为连接产品、品牌以及用户之间的平台,其发挥的作用一直都是不可小觑的。微博平台自 带的媒体属性,为品牌曝光...

  • 微商如何利用微博引流呢?

    【微博吸粉技巧】要让你的内容吸引互动者,不妨先主动与别人互动,就像社交平台微博上的互粉一样,首先得有了连接,才能创...

  • 首届芝加哥马拉松赛前5K隆重登场

    跑簿连接世界全球首个跑步旅行App上线进入倒计时!搜索微信或微博 “跑簿”,或访问www.runbuk.com。 ...

  • 那些年的春运,你都经历过什么?

    1月23日,演员吴京的一张图片上了微博热搜,照片中的他端着小板凳坐在火车的连接处,并发了一条微博:只要能回家,坐哪...

网友评论

      本文标题:连接微博

      本文链接:https://www.haomeiwen.com/subject/tlwsuttx.html