新浪微博客户端(14)-截取回调地址中的授权成功的请求标记,换取access_token
DJOAuthViewController.m
#import "DJOAuthViewController.h"
#import "AFNetworking.h" @interface DJOAuthViewController () <UIWebViewDelegate> @end @implementation DJOAuthViewController - (void)viewDidLoad {
[super viewDidLoad]; /* client_id&redirect_uri */
NSString *client_id = @"";
NSString *redirect_uri = @"https://www.baidu.com"; UIWebView *webView = [[UIWebView alloc] init];
webView.frame = self.view.bounds;
webView.delegate = self; [self.view addSubview:webView]; NSString *urlString = [NSString stringWithFormat:@"https://api.weibo.com/oauth2/authorize?client_id=%@&redirect_uri=%@",client_id,redirect_uri]; NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; [webView loadRequest:urlRequest]; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} #pragma mark - webView 代理方法 - (void)webViewDidStartLoad:(UIWebView *)webView {
// DJLog(@"webView开始加载"); } - (void)webViewDidFinishLoad:(UIWebView *)webView { // DJLog(@"webView结束加载"); } /** 此方法可用于拦截http请求 */
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *urlString = request.URL.absoluteString;
DJLog(@"current access url str : %@",urlString); // 1. 判断当前地址是否是回调地址(https://www.baidu.com/?code=27a3d9fb9bbc5d3c20be9ae8e4331b02)
NSRange range= [urlString rangeOfString:@"code="];
if (range.length != ) { // 是回调地址
// 2.截取code=后面的参数值
NSUInteger fromIndex = range.location + range.length;
NSString *code = [urlString substringFromIndex:fromIndex]; // code 就是授权成功的请求标记
// 3.使用授权成功的请求标记(code)来换取accessToken
[self getAccessTokenWithCode:code];
} return YES;
} - (void)getAccessTokenWithCode:(NSString *)code { // 1. 创建请求管理者
AFHTTPSessionManager *requestManager = [AFHTTPSessionManager manager]; // 2. 配置请求参数
NSString *urlString = @"https://api.weibo.com/oauth2/access_token"; // 请求授权的access_token URL
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"client_id"] = @"";
params[@"client_secret"] = @"71d5b761bac9f377af3b938f6d89ba85";
params[@"grant_type"] = @"authorization_code";
params[@"code"] = code;
params[@"redirect_uri"] = @"https://www.baidu.com"; // 3. 发送请求
[requestManager POST:urlString parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
DJLog(@"success responseObject: %@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
DJLog(@"failure responseObject: %@",error);
}]; }
新浪微博客户端(14)-截取回调地址中的授权成功的请求标记,换取access_token的更多相关文章
- Android新浪微博客户端(七)——ListView中的图片异步加载、缓存
原文出自:方杰|http://fangjie.info/?p=193转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到git ...
- 新浪微博客户端(13)-使用UIWebView加载OAuth授权界面
使用UIWebView加载OAuth授权界面 DJOAuthViewController.m #import "DJOAuthViewController.h" @interfac ...
- android开发新浪微博客户端 完整攻略 [新手必读]
开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就 ...
- QQ第三方登录回调地址的问题
如题,维护以前的项目,发现原来QQ的第三方登录竟然失败了.回调地址的问题 原来是以前的规则变了.好吧,那就改,谁叫我不是改变规则的人. 中途浪费了点时间,项目很大,我一下也找不到项目里那个接口调用的, ...
- 支付回调地址 同步回调地址 异步回调地址 return_url和notify_url的区别
[微信支付]JSAPI支付开发者文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=10 退款结果通知 ...
- 通知url必须为直接可访问的url,不能携带参数 异步接收微信支付结果通知的回调地址 不能携带参数。 回调地址后是否可以加自定义参数 同步回调地址 异步回调地址 return_url和notify_url的区别
[微信支付]微信小程序支付开发者文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7 通知url必须为直接可访问的 ...
- 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容
1.nodejs获取客户端真实的IP地址: 在一般的管理网站中,尝尝会需要将用户的一些操作记录下来,并记住是哪个用户进行操作的,这时需要用户的ip地址,但是往往当这些应用部署在服务器上后,都使用了ng ...
- 新浪微博API使用初步介绍——解决回调地址的问题
# -*- coding: utf-8 -*- #python 27 #xiaodeng #新浪微博API使用初步介绍——解决回调地址的问题 #http://blog.csdn.net/monsion ...
随机推荐
- windows live writer 尝试登陆时发生意外错误,导致无法发表博客解决方案
刚用windows live writer发表博客, 但是出现如下提示: 尝试登陆时发生意外错误: 网络连接错误--尝试连接到一下日志时出错: http://www.cnblogs.com//xxxx ...
- Win7上防火墙开放FTP服务以及ping解决方案(zz)
1.windows 防火墙开放ftp服务 The following 4 steps will allow both non-secure and SSL FTP traffic through fi ...
- myeclipse 2014新建maven web 项目步骤
首先在myeclipse中配置maven的安装路径: 在pom.xml中加上: 1 2 3 4 5 6 7 8 9 10 <plugins> <plugin&g ...
- 获取技能的成功经验和关于C语言学习的调查 2015528
内容提要 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 有关C语言学习的调查 你是怎么学习C语言的?(作业,实验,教材,其他 ...
- 看牙与IT项目
周末为了一颗牙第五次去牙科诊所,得到的消息是:还需要观察至少2周才能做牙冠,同时发现了较深的牙结石需要做刮治,刮治疗需要2次.因此至少要再去医院3次.从去年的六月体检发现这颗牙的问题,目前最乐观估计也 ...
- iOS 后台运行 类型
iOS后台运行,需要有特定的类型才可以进行.这些内容并不是一直不变的,苹果也在逐步的更新这些内容. 本文内容是2015年11月03日时苹果支持的后台运行类型. 这是官方连接地址 其中较为重要的是下面这 ...
- IT男的”幸福”生活"续3
我和MM一进饭店,服务员走过,面带笑容,说:“欢迎,欢迎,两位里面坐.” ...... 谢谢大家的捧场,IT的”幸福”生活.是我的回忆录来着.真实可靠,在写法上有点小说化.可能是我一直看小说的原因吧, ...
- 编译到底做了什么(***.c -> ***.o的过程)
(第一次写博客,好激动的说.......) 我们知道,一个程序由源代码到可执行文件往往由这几步构成: 预处理(Prepressing)-> 编译(Compilation)-> 汇编( ...
- Object C学习笔记22-#define 用法
上一篇讲到了typedef 关键字的使用,可以参考文章 Object C 学习笔记--typedef用法 .而在c中还有另外一个很重要的关键字#define. 一. #define 简介 在C中利用预 ...
- js中的DOM操作(1)
一.操作子节点 childNodes 通过该方式可以获取父节点下的所有子节点,但是由于浏览器的差异,这写节点中可能包含文本节点. <!DOCTYPE html> <html> ...