具体说明见新浪官方文档
http://open.weibo.com/wiki/Oauth2/access_token
 
具体实现

第一步 打开回调页面

// 宏定义client_id

#define kClientId @“xxx"

// 宏定义回调地址

#define kRedirect_Uri @"xxx”

// 宏定义client_secret

#define kClient_Secret @“xxx"

1、添加webView

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];

webView.delegate = self;

[self.view addSubview:webView];

2、加载授权页面 

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的更多相关文章

  1. IOS第三天-新浪微博 - 版本新特性,OAuth授权认证

    *********版本新特性 #import "HWNewfeatureViewController.h" #import "HWTabBarViewController ...

  2. IOS OAuth授权分析

    一.黑马微博 ---> 用户的微博数据1.成为新浪的开发者(加入新浪微博的开发阵营)* 注册一个微博帐号,登录http://open.weibo.com帐号:643055866@qq.com密码 ...

  3. 第三方OAuth授权登录,QQ、微信(WeChat)、微博、GitHub、码云(Gitee)、淘宝(天猫)、微软(Microsoft )、钉钉、谷歌(Google)、支付宝(AliPay)、StackOverflow

    Netnr.Login 第三方OAuth授权登录 支持第三方登录 三方 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 安装 ( ...

  4. iOS之新浪微博的OAuth授权

    新浪微博的OAuth授权 之前通过新浪微博开发平台写过微博的的项目,现在就开始总结下各个方面的知识点,一个是为了加深印象.巩固知识,另一个记录自己学习过程,希望自己在开发这条路上有所积累,为以后的道路 ...

  5. 腾讯OAuth授权联合登录

    /** * unionLoginCallbackPath */ @Value("${QQ_UNION_LOGIN_CALLBACK_PATH}") private String q ...

  6. OAuth授权过程

    什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准,所谓OAuth(即Open Authorization,开放授权),它是为用户资源授权提供了一种安全简单的标准, ...

  7. 微信公众账号开发之微信登陆Oauth授权-第一篇

    我曾经在2012年的时候开始研究微信,那时微信的版本还是处于1.0,当时给朋友帮忙做一个基于微信端的web应用,官方的文档是相当少的,百度搜索出来的东西基本也没有多少实用价值,不过是在官网的基础上作了 ...

  8. [iOS微博项目 - 2.0] - OAuth授权3步

    A.概念      OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用 ...

  9. OAuth授权 | 把这一篇丢给他

    OAuth授权 一.背景 上一篇我们介绍了单点登录(SSO),它能够实现多个系统的统一认证.今天我们来谈一谈近几年来非常流行的,大名鼎鼎的OAuth.它也能完成 统一认证,而且还能做更多的事情.至于O ...

随机推荐

  1. Ogre 中使用OIS的两种模式

    关于OIS的输入 要开始考虑游戏输入的问题了,以及开始加入CEGUI也要考虑加入输入的问题.先把OIS的输入简单回忆一下. OIS有两种输入模式:非缓冲输入以及缓冲输入. 无论用哪种输入方式,都应该有 ...

  2. [HNOI2010] 合唱队 chorus

    标签:区间DP.题解: 首先分析题目,根据题目中的列队方式以及数据范围,我们容易想到O(n2)的算法,也就是区间DP.发现直接dp[L][R],不能转移,于是添加一个dp[L][R][0/1],0表示 ...

  3. IDEA快捷的添加包名

    Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题 2018年02月24日 17:24:49 _云卷云舒_ 阅读数:6264 标签: intellij idea 更 ...

  4. RPC跟MQ之间的差异比较

    在阿里的平台技术部参与开发了Dubbo(远程调用服务)和Napoli(消息解决方案),又给网站应用支持这2个产品很长一段时间,了解了这2个产品的实现及应用对这两个产品的用法. 大部分情况下,“给定场景 ...

  5. [NOIP2014]无线网站发射器选址

    Description 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网.假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状, ...

  6. [poj 2104] K-th Number【主席树】

    传送门:http://poj.org/problem?id=2104 保存模版. #include <cstdio> #include <algorithm> #include ...

  7. Dubbo端口占用错误信息

    SEVERE: Exception sending context initialized event to listener instance of class com.common.SysCont ...

  8. linux 设置固定IP centOS6.5

    主要是要把Linux的IP固定下来,可以用另一台机器SSH连接. ping的用法: 基本语法:ping [-选项] IP地址或域名 功能描述:测试网络是否连通 常用选项:-c -c 指定发送数据包的次 ...

  9. Python + request接口测试中Cookie和Session的获取和使用

    Cookie和Session的简单理解  由于Http协议是无状态的,所以产生了cookie和session进行状态的管理. 从哪里来,在哪里,到哪里去: --> Cookie是由服务端生成,存 ...

  10. php中3DES加密技术

    因为工作中要用到加密,接口中要求也是用密文传输数据,用到3des加密,就研究了一下. 在网上也找了好多,但是都不可以用,没法正式运行,终于找到一个可以运行的,自己又修改了一下,记录下来,以后还可能会用 ...