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 ...
随机推荐
- std::map Intro
#include <queue>#include <map>#include <iostream>#include <string.h> class T ...
- Linux cp命令拷贝 不覆盖原有的文件
cp 参数说明: -i或--interactive 覆盖既有文件之前先询问用户. -r 递归处理,将指定目录下的文件与子目录一并处理. -R或--recursive 递归处理,将指定目录下的所有 ...
- javaScript 删除确认实现方法总结分享
第一种方法:挺好用的,确认以后才能打开下载地址页面.原理也比较清晰.主要用于删除单条信息确认.<SCRIPT LANGUAGE=javascript> function p_del() { ...
- Fsharp 类中的空字段
fsharp设计之初就尽可能的避免使用null.在我的编程经验中null真是个错误之源,垃圾代码之源,95%的系统奔溃之源.其实在设计之初就应该考虑你的系统需要null表现什么?是未初始化的状态,还是 ...
- Tomcat启动过程[更详细]
原文地址:http://blog.csdn.net/jiaomingliang/article/details/47427083
- 排序 & 常用算法
一.快速排序QuickSort 快速排序和归并排序都使用分治法来设计算法,区别在于归并排序把数组分为两个基本等长的子数组,分别排好序之后还要进行归并(Merge)操作,而快速排序拆分子数组的时候显得更 ...
- 搭建maven web项目并配置quartz定时任务【业务:对比数据变化内容】 历程
搭建maven web项目并配置quartz定时任务[业务:对比数据变化内容] 历程2018年03月03日 10:51:10 守望dfdfdf 阅读数:100更多个人分类: 工作 问题编辑版权声明:本 ...
- C语言函数调用简简介
1.函数的声明: 在编写程序时,首先要对函数进行声明,然后对函数进行定义: 函数的声明是要让编译器知道函数的名称.参数.返回值类型等信息: 函数的定义是要让编译器知道函数的功能: 函数声明的格式由函数 ...
- javascript中如何实现继承
javascript中如何实现继承 // 原型方式的'继承' function Person(name) { //定义一个Person的构造函数 this.name = name; //添加属性 } ...
- 零基础逆向工程37_Win32_11_事件_线程同步
1 内核对象 前面已经学过线程和互斥体两个内核对象.此节讲了事件这个内核对象.前面提出了内核对象这个概念,可能不太清晰,简单来说内核对象就是系统层的东西. 1.1 小结内核对象: 进程.线程.事件.互 ...