#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认证代码的更多相关文章

  1. QQ登录整合/oauth2.0认证-03-对第二节的代码改进

    ---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...

  2. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  3. C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决

            近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...

  4. 工作笔记—新浪微博Oauth2.0授权 获取Access Token (java)

    java发送新浪微博,一下博客从注册到发布第一条微博很详细 利用java语言在eclipse下实现在新浪微博开发平台发微博:http://blog.csdn.net/michellehsiao/art ...

  5. QQ登录整合/oauth2.0认证-04-调整到QQ互联进行QQ登录

    ---------------------------------目录------------------------------------- QQ登录整合/oauth2.0认证-03-对第二节的代 ...

  6. QQ登录整合/oauth2.0认证-02-跳转到QQ互联页

    ---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...

  7. DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配

    DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配 主题自带了微博登陆接口,很简单的去新浪微博开放平台创建了网页应用,然后把APP ID和 AppSecret填好后,以为大功告成 ...

  8. Spring Cloud Security OAuth2.0 认证授权系列(一) 基础概念

    世界上最快的捷径,就是脚踏实地,本文已收录[架构技术专栏]关注这个喜欢分享的地方. 前序 最近想搞下基于Spring Cloud的认证授权平台,总体想法是可以对服务间授权,想做一个基于Agent 的无 ...

  9. Spring Security OAuth2.0认证授权一:框架搭建和认证测试

    一.OAuth2.0介绍 OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容. 1.s ...

随机推荐

  1. maya 安装不上

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  2. linux开机挂载磁盘

    1. [root@localhost master-build]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Aug :: ...

  3. Murano Weekly Meeting 2016.06.07

    Meeting time: 2016.June.7 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: 1.A ...

  4. Collections练习之对字符串先折半,再取最长的一个

    不多说,直接上干货! 代码需求 由 [aa, abcde, cba, cba, nbaa, zzz] 变成 max=abcde CollectionsDemo.java package zhouls. ...

  5. MVC4笔记 @functions @model @using

    /////@functions自定义函数////// @helper辅助方法的确可以很方便的完成辅助方法开发,不过却失去了一些弹性,例如,无法在@helper中自定义属性,只能单纯的传入参数,然后格式 ...

  6. 斗鱼扩展--notifications提示(十二)

    来说下 桌面通知 Notification,HTML5支持 Web Notifications 的实例,但是要经过用户允许,  chrome://settings/content/notificati ...

  7. 权限修饰符(public、protected、default、private)权限验证

    一.测试方法 在authorityTest包中建类AuthorityValidate package authorityTest; public class AuthorityValidate { p ...

  8. jQuery属性选择器中加变量

    $(function () { $('#bkhandle').on('click','#bkdel',function () { $.ajax( { url:"{% url 'bkdel' ...

  9. Android Studio 小技巧(2):AS中Button文字默认大写的问题

    问题类型 设置Layout中添加一个Button <Button android:id="@+id/bt_showerror" android:layout_width=&q ...

  10. UDoc(云平台企业应用级 文档管理产品)

    类型: 定制服务 软件包: integrated industry solution collateral 联系服务商 产品详情 解决方案 概要 为企业提供基于云平台企业应用级文档管理产品,尽可能最大 ...