OAuth授权之回调accessToken
第一步 打开回调页面
#define kClientId @“xxx"
// 宏定义回调地址
#define kRedirect_Uri @"xxx”
// 宏定义client_secret
#define kClient_Secret @“xxx"
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
webView.delegate = self;
[self.view addSubview:webView];
NSString *oauthPath = [NSString stringWithFormat:@"https://api.weibo.com/oauth2/authorize?client_id=%@&redirect_uri=%@", kClientId, kRedirect_Uri];
NSURL *url = [NSURL URLWithString:oauthPath];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
/**
* 当webView发送一个请求之前都会先调用这个方法, 询问代理可不可以加载这个页面(请求)
*
* @return YES : 可以加载页面, NO : 不可以加载页面
*/
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
// 第二步 取得请求参数
// 1.请求返回的URL的绝对路径 http://www.baidu.com/?code=a0872f25a06acf714a4067266a2eeaf4
NSString *requestUrlPath = request.URL.absoluteString;
// 2.获取 ?code= 的范围
NSRange range = [requestUrlPath rangeOfString:@"?code="];
// 3.如果在requestUrlPath中找到了?code= 进行截取
if (range.length) {// if (range.location != NSNotFound) 同左
// 在?code=位置上加上?code=的长度即为?code=后面的字符串
int loc = range.location + range.length;
NSString *code = [requestUrlPath substringFromIndex:loc];
// 第三步 通过POST传递参数体获得accessToken
// AFNetworking框架
// 创建请求管理对象
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// post方式访问需要传递参数体,拼接需要传递的参数
NSMutableDictionary *askParams = [NSMutableDictionary dictionary];
askParams[@"client_id"] = kClientId;
askParams[@"client_secret"] = kClient_Secret;
askParams[@"grant_type"] = @"authorization_code";
askParams[@"code"] = code;
askParams[@"redirect_uri"] = kRedirect_Uri;
// 发送post请求
[manager POST:@"https://api.weibo.com/oauth2/access_token" parameters:askParams success:^(AFHTTPRequestOperation *operation, id responseObject) {
XYLog(@"%@--responseObject", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
XYLog(@"%@--error", error);
}];
}
return YES;
}
POST请求需要拼接的参数包括
/**
client_id string 申请应用时分配的AppKey。
client_secret string 申请应用时分配的AppSecret。
grant_type string 请求的类型,填写authorization_code
code string 调用authorize获得的code值。
redirect_uri string 回调地址,需需与注册应用里的回调地址一致。
*/ (参见 http://open.weibo.com/wiki/Oauth2/access_token)
返回值 例子如下
{
"access_token": "ACCESS_TOKEN",
"expires_in": 1234,
"remind_in":"798114",
"uid":"12341234"
}
OAuth授权之回调accessToken的更多相关文章
- IOS第三天-新浪微博 - 版本新特性,OAuth授权认证
*********版本新特性 #import "HWNewfeatureViewController.h" #import "HWTabBarViewController ...
- IOS OAuth授权分析
一.黑马微博 ---> 用户的微博数据1.成为新浪的开发者(加入新浪微博的开发阵营)* 注册一个微博帐号,登录http://open.weibo.com帐号:643055866@qq.com密码 ...
- 第三方OAuth授权登录,QQ、微信(WeChat)、微博、GitHub、码云(Gitee)、淘宝(天猫)、微软(Microsoft )、钉钉、谷歌(Google)、支付宝(AliPay)、StackOverflow
Netnr.Login 第三方OAuth授权登录 支持第三方登录 三方 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 安装 ( ...
- iOS之新浪微博的OAuth授权
新浪微博的OAuth授权 之前通过新浪微博开发平台写过微博的的项目,现在就开始总结下各个方面的知识点,一个是为了加深印象.巩固知识,另一个记录自己学习过程,希望自己在开发这条路上有所积累,为以后的道路 ...
- 腾讯OAuth授权联合登录
/** * unionLoginCallbackPath */ @Value("${QQ_UNION_LOGIN_CALLBACK_PATH}") private String q ...
- OAuth授权过程
什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准,所谓OAuth(即Open Authorization,开放授权),它是为用户资源授权提供了一种安全简单的标准, ...
- 微信公众账号开发之微信登陆Oauth授权-第一篇
我曾经在2012年的时候开始研究微信,那时微信的版本还是处于1.0,当时给朋友帮忙做一个基于微信端的web应用,官方的文档是相当少的,百度搜索出来的东西基本也没有多少实用价值,不过是在官网的基础上作了 ...
- [iOS微博项目 - 2.0] - OAuth授权3步
A.概念 OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用 ...
- OAuth授权 | 把这一篇丢给他
OAuth授权 一.背景 上一篇我们介绍了单点登录(SSO),它能够实现多个系统的统一认证.今天我们来谈一谈近几年来非常流行的,大名鼎鼎的OAuth.它也能完成 统一认证,而且还能做更多的事情.至于O ...
随机推荐
- thinkphp5.0 页面缓存
在application\config.php里加 //以下为静态缓存配置 'app_debug' => false,//false为开启静态缓存模式 'html_cache_on' => ...
- Unity中资源动态加载的几种方式比较
http://blog.csdn.net/leonwei/article/details/18406103 初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安 ...
- MySql 5.6 遇到的一些问题
1. 卸载5.5之后,使用 mysql installer 时,没法设定 data directory . 最后再次删除mysql installer之后,使系统干净后才能重新安装, 然后界面出现了 ...
- ios开发static关键字的理解
:static关键字修饰局部变量::当static关键字修饰局部变量时,该局部变量只会初始化一次,在系统中只有一份内存 :static关键字不可以改变局部变量的作用域,但是可延长局部变量的生命周期,该 ...
- centos 7 安装pip和pip3
首先安装epel扩展源: yum -y install epel-release 更新完成之后,就可安装pip: yum -y install python-pip 安装完成之后清除cache: yu ...
- Zynq7000开发系列-6(QT开发环境搭建:Ubuntu、Zynq)
操作系统:Ubuntu14.04.5 LTS 64bit Qt:Qt 5.4.2 (qt-opensource-linux-x64-5.4.2.run.qt-everywhere-opensource ...
- JQuery基础知识梳理篇
这周没事,优化线上项目,因为前端都在赶项目,我又若菜.于是前端数据展示也要自己来.看javascript看到吐,决定梳理一下Jquery基础知识.敲黑板) 闲扯结束,进入正题. 选择器 介绍 jque ...
- Hive_Hive的数据模型_数据存储
Hive的数据模型_数据存储 web管理工具察看HDFS文件系统:http://<IP>:50070/ 基于HDFS没有专门的数据存储格式,默认使用制表符存储结构主要包括:数据库,文件,表 ...
- python入门之迭代器
迭代器 已知,可以直接作用于for循环的数据类型有: 一类是集合数据类型,如list.tuple.dict.set.str 一类是generator,包括生成器和带yield的generator fu ...
- [在读]Secrets of the javascript Ninja
很棒的一本,可惜没有中文版.