iOS新浪微博OAuth2.0认证代码
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()<UIWebViewDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.使用webview
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:webView];
//要让webView发起请求 我需要一个新浪的登录页面
//接口 https://api.weibo.com/oauth2/authorize 这个接口.
//使用那个平台,就要使用哪个平台的sdk 只需要提供三个参数 app key ,app sercect?,回调页网址.
/**
client_id 申请应用时分配的AppKey。
redirect_uri 授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。
*/
NSURL *url = [NSURL URLWithString:@"https://api.weibo.com/oauth2/authorize?client_id=2320601559&redirect_uri=http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
webView.delegate = self;
[webView loadRequest:request];
//当用户点击授权的时候,新浪服务器返回一个重定向地址,并且绑定了一个重要的参数 code
//code是干嘛的?,demo应用要找到这个code 然后用这个code去新浪服务器去请求toke
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
NSString *url = webView.request.URL.absoluteString;
NSLog(@"webview开始加载,加载地址是 : %@",url);
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"webView加载结束");
} - (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
//判断一下请求是否是服务器返回的重定向请求?
NSString *url = request.URL.absoluteString;
//是否包含code=
NSRange range = [url rangeOfString:@"code="];
if (range.length != ) {
//这里就要截取code=后面的数据.
// http://www.baidu.com/?code=29a7addea0226eeaf94768440639189f
NSInteger index = range.location + range.length;
NSString *code = [url substringFromIndex:index];
//自己发起一个请求获取access_token
/**
client_id string 申请应用时分配的AppKey。
client_secret string 申请应用时分配的AppSecret。
grant_type string 请求的类型,填写authorization_code grant_type为authorization_code时
必选 类型及范围 说明
code string 调用authorize获得的code值。
redirect_uri string 回调地址,需需与注册应用里的回调地址一致。
*/
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager]; NSString *tokenURL = @"https://api.weibo.com/oauth2/access_token";
NSDictionary *params = @{
@"client_id":@"",
@"client_secret":@"d77590e7cb2b4dda50e5c17359380d0e",
@"grant_type":@"authorization_code",
@"code":code,
@"redirect_uri":@"http://www.baidu.com"
}; [sessionManager POST:tokenURL parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"token 请求成功 %@",responseObject);
// 2.00aE6vVD6TADXCd89cbb1e870CqJn_ NSDictionary *result = (NSDictionary *)responseObject;
NSString *token = result[@"access_token"]; [sessionManager GET:@"https://api.weibo.com/2/statuses/public_timeline.json" parameters:@{@"access_token":token} success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"成功返回的地址是 : %@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"返回失败.");
}]; // 2.00aE6vVD6TADXCd89cbb1e870CqJn_
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"token 请求失败.");
}];
//阻止当前webviwe跳转到回调页面.
return NO;
}
return YES;
} @end
iOS新浪微博OAuth2.0认证代码的更多相关文章
- QQ登录整合/oauth2.0认证-03-对第二节的代码改进
---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...
- 使用Owin中间件搭建OAuth2.0认证授权服务器
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
- C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决
近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...
- 工作笔记—新浪微博Oauth2.0授权 获取Access Token (java)
java发送新浪微博,一下博客从注册到发布第一条微博很详细 利用java语言在eclipse下实现在新浪微博开发平台发微博:http://blog.csdn.net/michellehsiao/art ...
- QQ登录整合/oauth2.0认证-04-调整到QQ互联进行QQ登录
---------------------------------目录------------------------------------- QQ登录整合/oauth2.0认证-03-对第二节的代 ...
- QQ登录整合/oauth2.0认证-02-跳转到QQ互联页
---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...
- DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配
DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配 主题自带了微博登陆接口,很简单的去新浪微博开放平台创建了网页应用,然后把APP ID和 AppSecret填好后,以为大功告成 ...
- Spring Cloud Security OAuth2.0 认证授权系列(一) 基础概念
世界上最快的捷径,就是脚踏实地,本文已收录[架构技术专栏]关注这个喜欢分享的地方. 前序 最近想搞下基于Spring Cloud的认证授权平台,总体想法是可以对服务间授权,想做一个基于Agent 的无 ...
- Spring Security OAuth2.0认证授权一:框架搭建和认证测试
一.OAuth2.0介绍 OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容. 1.s ...
随机推荐
- matlab 图像和 opencv 图像的相互转换
matlab可以生成C++代码, 但是在涉及图像数据的时候,要注意数据格式的转换. 1. Matlab图像数据在内存中的存放顺序是R通道图,G通道图,B通道图.对于每个通道,数据存放是先列后行. 2. ...
- Magnum DevStack安装
local.conf文件 [[local|localrc]]DATABASE_PASSWORD=123456RABBIT_PASSWORD=123456SERVICE_TOKEN=123456SERV ...
- vueHistory 模式下,布置到服务器上路由刷新会报nginx404错误
之前写完vue项目后,布置到服务器,用nginx反向代理后,一开始进去,进各种路由都是没问题的,但是一旦f5刷新后就会出现一个nginx404的错误. 经过翻阅vue文档后,发现这是vueHistor ...
- 编译Win32动态库工程的两个链接错误的解决
作者:朱金灿 来源:http://blog.csdn.net/clever101 今天编译一个Win32动态库工程,出现两个链接错误的解决,一个是: main.obj: error LNK2001: ...
- Python 爬虫实战(二):使用 requests-html
Python 爬虫实战(一):使用 requests 和 BeautifulSoup,我们使用了 requests 做网络请求,拿到网页数据再用 BeautifulSoup 解析,就在前不久,requ ...
- Azure 6 月新公布
Azure 6 月新发布:磁盘加密预览版 , CDN 用户上传 HTTPS 自有证书及价格调整. Azure 磁盘加密预览版现已在中国发布 Azure 磁盘加密预览版已对 Azure 中国云地区的 W ...
- [转]Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
今天学习了Spinner组件,使用Spinner相当于从下拉列表中选择项目,下面演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现) (一):使用ArrayAda ...
- excel跨表查询数据
环境:公司部分部门进行商品盘点,店铺经理要求不经过系统进行盘点,全程采用excel表格处理所示: 左图为总表,右图为首饰部门录入的数据 需求:找出盘点差异(即首饰部商品数量是否和 ...
- php:定义时间跳转到指定页面
我们想要定义延迟时间,再跳转到指定页面,只要用header()即可,语法: header("Refresh:延迟时间;url=要跳转的页面"); 例子: 注意注意:我们在heade ...
- 测试笔记:本地存储localstorage与sessionstorage
最近测试的投票项目开发说用的是localstorage.查了下是h5的本地存储.还有个sessionstorage,区别在于sessonstorage关闭页面后清空,localstorage保留. 以 ...