ios-新浪微博开发-17(授权3)
2015-09-18 20:27
405 查看
#import "QHOAuthViewController.h" #import "AFNetworking.h" @interface QHOAuthViewController()<UIWebViewDelegate> @end @implementation QHOAuthViewController - (void)viewDidLoad { [super viewDidLoad]; //1.创建webView UIWebView *webView = [[UIWebView alloc]init]; webView.frame = self.view.bounds; [self.view addSubview:webView]; webView.delegate = self; //2.用webView加载登录页面(新浪提供的) 回调地址不是空!!!默认值是http:// //请求地址:https://api.weibo.com/oauth2/authorize //请求参数 client_id=438168078&redirect_uri=http:// NSURL *url = [NSURL URLWithString:@"https://api.weibo.com/oauth2/authorize?client_id=438168078&redirect_uri=http://www.baidu.com"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [webView loadRequest:request]; NSLog(@"-----viewDidLoad"); //invalid_request 参数搞错了 或者没有参数 // Do any additional setup after loading the view. } #pragma mark -webView代理方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"-----ViewDidFinishLoad"); } - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"webViewDidStartLoad"); } //可以拦截所有的URL - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { //1.获得url NSString *url = request.URL.absoluteString; //2.判断是否为回调地址 NSRange range = [url rangeOfString:@"code="]; if (range.length != 0) {//是回调地址 //截取code=后面的参数值 NSInteger fromIndex = range.location + range.length; NSString *code = [url substringFromIndex:fromIndex]; //code 授权成功的标记 //利用code 换取一个accessToken [self accessTokenWithCode:code]; NSLog(@"%@ %@",code,url); } NSLog(@"shouldStartLoadWithRequest -- %@",request.URL.absoluteString); return YES; } /** * 利用code(授权成功后的请求标记 授权成功后的request token)换取一个accessToken * * @param code 授权成功后的请求标记 */ - (void)accessTokenWithCode:(NSString *)code { /** * client_id true string 申请应用时分配的AppKey。 client_secret true string 申请应用时分配的AppSecret。 grant_type true string 请求的类型,填写authorization_code grant_type为authorization_code时 必选 类型及范围 说明 code true string 调用authorize获得的code值。 redirect_uri true string 回调地址,需需与注册应用里的回调地址一致。 * * */ //1.请求管理者 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; // mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; //2拼接请求参数 NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"client_id"] = @"438168078"; params[@"client_secret"] = @"983ddac0a0dce9ee09161e5f5e04bfd7"; params[@"grant_type"] = @"authorization_code"; params[@"redirect_uri"] = @"http://www.baidu.com"; params[@"code"] = code; //3.发送请求 [mgr POST:@"https://api.weibo.com/oauth2/access_token" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { QHLog(@"请求成功-%@",responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { QHLog(@"请求失败-%@",error); }]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end
相关文章推荐
- ios-新浪微博开发-16(授权)
- ios-新浪微博开发-15(新特性3)
- iOS_词典阵列 按key分组和排序
- ios-控件不显示的问题 总结
- ios-新浪微博开发-14(新特性2)
- ios-新浪微博开发-13-新特性(1)
- iOS中消息的传递机制
- 苹果开发 笔记(77)NSJSONSerialization
- iOS数据解析之NSXMLParser
- xcode 6.4 启动虚拟机自动退出
- ios开发必备10款第三方类库
- 一些iOS常用的第三方库和控件
- iOS MKMapView简单介绍
- ios+phonegap跳转到任意界面
- xcode7,ios9 部分兼容设置 bitcode
- iOS—请求Web Service
- iOS数据解析之json
- xcode7 iOS9 问题大全及解决
- vmstat及iostat检查io问题
- 学习笔记--获取ios当前时间