Weibo SSO认证 和初次请求数据
在进行SSO请求之前 我们要先去新浪微博的开放平台http://open.weibo.com/进行创建应用.以便得到appKey 和AppSecret.
点击创建应用 .进行资料填写 在这里
Apple ID 是现在可以随意填写的 但是在正式应用上线后 需要马上更改
Bundle ID 必须要和Xcode上的 Bundle Identifier 上的一样.1) 导入libWeiboSDK设置代理.WeiboSDKDelegate2)注册Appkey
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey];
3)创建一个Button用来触发sso请求//创建一个Button来点击请求授权
_ssoButton=[UIButton buttonWithType:UIButtonTypeCustom];
// [_ssoButton setTitle:@"hehehehe" forState:UIControlStateNormal];//要颜色啊
[_ssoButton setImage:[UIImage imageNamed:@"LoginButton@2x.png"] forState:UIControlStateNormal];
[_ssoButton addTarget:self action:@selector(ssoButtonRequest) forControlEvents:UIControlEventTouchDown];
[_ssoButton setFrame:CGRectMake(100, 350, 130, 80)];
[self.view addSubview:_ssoButton];
4)触发 发送授权请求-(void)ssoButtonRequest
{
WBAuthorizeRequest*request=[WBAuthorizeRequest request];
request.redirectURI=kRedirectURI;
request.scope=@"all";
request.userInfo = @{@"SSO_From": @"SendMessageToWeiboViewController",
@"Other_Info_1": [NSNumber numberWithInt:123],
@"Other_Info_2": @[@"obj1", @"obj2"],
@"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
[WeiboSDK sendRequest:request];
}5)接受weibo的响应
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response
{
if ([response isKindOfClass:WBSendMessageToWeiboResponse.class])
{
NSString *title = @"发送结果";
NSString *message = [NSString stringWithFormat:@"响应状态: %d\n响应UserInfo数据: %@\n原请求UserInfo数据: %@",
response.statusCode, response.userInfo, response.requestUserInfo];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert show];
[alert release];
}
else if ([response isKindOfClass:WBAuthorizeResponse.class])
{
NSString *title = @"认证结果";
NSString *message = [NSString stringWithFormat:@"响应状态: %d\nresponse.userId: %@\nresponse.accessToken: %@\n响应UserInfo数据: %@\n原请求UserInfo数据: %@",
response.statusCode, [(WBAuthorizeResponse *)response userID], [(WBAuthorizeResponse *)response accessToken], response.userInfo, response.requestUserInfo];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
self.wbtoken = [(WBAuthorizeResponse *)response accessToken];
NSLog(@"token=%@", self.wbtoken);
// 保存授权用户的token 如果需要进行API请求 便要保存密钥
[[NSUserDefaults standardUserDefaults] setObject:self.wbtoken forKey:@"access_token"];
[alert show];
[alert release];
}
}
6)创建一个按钮 触发请求接口数据 (这里以请求200条公共微博为例子.默认20条)
UIButton*requestDataButton=[UIButton buttonWithType:UIButtonTypeCustom];
[requestDataButton setTitle:@"请求数据" forState:UIControlStateNormal];
[requestDataButton setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[requestDataButton setBackgroundColor:[UIColor orangeColor]];
[requestDataButton addTarget:self action:@selector(requestData) forControlEvents:UIControlEventTouchDown];
[requestDataButton setFrame:CGRectMake(100, 420, 130, 80)];
[self.view addSubview:requestDataButton];
7)用异步请求去请求并且解析 用到了SBJson第三方
-(void)requestData
{
//创建密钥的字符串
NSString*access_token=[[NSUserDefaults standardUserDefaults]objectForKey:@"access_token"];
//创建一个URL...
NSURL*url=[NSURL URLWithString:[NSString stringWithFormat:@"https://api.weibo.com/2/statuses/public_timeline.json?access_token=%@",access_token]];
//创立一个request对象
NSURLRequest*request=[NSURLRequest requestWithURL:url];
//实例化一个可变的data 用来接受数据
_data=[[NSMutableData alloc]init];
//设置一个异步连接请求
[NSURLConnection connectionWithRequest:request delegate:self];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"hehhe");
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//进行拼接
[_data appendData:data];
NSLog(@"=========%d",_data.length);
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString*dataStr=[[NSString alloc]initWithData:_data encoding:NSUTF8StringEncoding];
NSDictionary*dataJS=[dataStr JSONValue ];
NSLog(@"datajs=%@",dataJS);
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"有错误");
}
8)/********
重写AppDelegate 的 handleOpenURL 和 openURL 方法
*********/
//写上面即可...
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [WeiboSDK handleOpenURL:url delegate:self];
}
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [WeiboSDK handleOpenURL:url delegate:self];
}
//这个sdk里面的请求是调用了手机内的微博app .
[WBHttpRequest requestWithAccessToken:kDefineToken url:@"https://api.weibo.com/2/statuses/public_timeline.json" httpMethod:@"GET" params:nil delegate:self withTag:nil];
Weibo SSO认证 和初次请求数据的更多相关文章
- 前端缓存API请求数据
1. 背景 在一些项目中,有时候会出现不同模块重复请求大量相同api接口的情况,特别是在一些功能相似的后台管理页面中.以下面这几个页面为例,每次进入页面都需要请求等大量重复的下拉框数据,下拉框数据短时 ...
- (转)《SSO CAS单点系列》之 实现一个SSO认证服务器是这样的!
上篇我们引入了SSO这个话题<15分钟了解SSO是个什么鬼!>.本篇我们一步步深入分析SSO实现机理,并亲自动手实现一个线上可用的SSO认证服务器!首先,我们来分析下单Web应用系统登录登 ...
- HTTP客户端之使用request方法向其他网站请求数据
在node中,可以很轻松的向任何网站发送请求并读取该网站的响应数据. var req=http.request(options,callback); options是一个字符串或者是对象.如果是字符串 ...
- iOS 绕过https证书验证 请求数据
HTTPS和HTTP: 1.https协议需要到ca申请证书,一般免费证书很少,需要交费. 2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议. 3.http ...
- Django-REST-Framework JWT 实现SSO认证(上)
一.什么是Django-REST-Framework? Django-REST-framework 是基于Django框架的一个web RESTful风格开发的框架,它可以实现API接口的快速开发,但 ...
- C# http请求数据
http中get和post请求的最大区别:get是通过URL传递表单值,post传递的表单值是隐藏到 http报文体中 http以get方式请求数据 /// <summary> /// g ...
- 【原生态】Http请求数据 与 发送数据
今天项目组小弟居然问我怎么用java访问特定的地址获取数据和发送请求 Http请求都是通过输入输出流来进行操作的,首先要制定GET或者POST,默认是GET,在安全和数据量较大情况下请使用post 根 ...
- 用JQuery Ajax 与一般处理程序 请求数据无刷新,以及如何调试错误
通过 ajax() 与 一般处理程序,请求数据库数据,实现界面无刷新. Jquery ajax 请求参数详细说明 http://www.w3school.com.cn/jquery/ajax_ajax ...
- Java服务器对外提供接口以及Android端向服务器请求数据
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...
随机推荐
- SVN允许修改日志
1.强制写日志在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:将下面的代码存为放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误 ...
- Python中几种数据结构的整理,列表、字典、元组、集合
列表:shoplist = ['apple', 'mango', 'carrot', 'banana']字典:di = {'a':123,'b':'something'}集合:jihe = {'app ...
- DDD的ABP开发框架
基于DDD的ABP开发框架初探 一.基本概念 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP是土耳其的以为架构师hikalkan开发 ...
- BZOJ 1200 木梳
Description Input 第一行为整数L,其中4≤L≤100000,且有50%的数据满足L≤104,表示木板下侧直线段的长.第二行为L个正整数A1,A2,…,AL,其中Ai≤108 Outp ...
- Unity3D批处理脚本
Unity3D批处理脚本 本文属于转载,如有侵权,请留言,我会及时删除! Max09在模型到处的模型和U3D场景的尺寸不一致,Max09中的1m导到U3D中,只有0.01m,这时可以在U3D中将模型的 ...
- GIT,VAGRANT及COREOS
搞了COREOS才高大上啊. 测试DOCKER安装. 就是WIN下面GIT显得土豪..
- vsphere 出现“在主机的当前连接状况下不允许执行该操作”
问题: 登录vsphere client启动虚拟机出现“在主机的当前连接状况下不允许执行该操作” 解决方法: 1.选择主机->右键->断开 2.选择主机->右键->连接 3.在 ...
- 模拟I2C从机
模拟I2C主机的比较多,但是从机相对主机而言要难很多,这个供大家借鉴. 这个从机程序支持主机对它的随机写和随机读,连续读和连续写没做,有兴趣的可以完善下,呵呵. //Microcontrol CODE ...
- Maven实战一
转载:http://www.iteye.com/topic/1123221 1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: Cmd代码 mvn archetype:ge ...
- http请求方式和状态管理
1. HTTP协议 Internet的基本协议是TCP/IP协议(传输控制协议和网际协议),目前广泛使用的 FTP.HTTP(超文本传输协议).Archie Gopher都是建立在TCP/IP上面的 ...