OAuth授权详解,以新浪微博为例

原创 2015年07月07日 18:32:52
/*
//OAuth授权过程:
1、登陆账号
http://open.weibo.com
注册一下开发者信息,成为新浪的开发者

2、点击“移动应用”,创建一个应用(勾选应用名称,应用平台就可以了),页面跳转,显示到“开发阶段即可”
 
3、回到主页面,点击API接口》首页》OAuth2.0授权认证
 根据说明点击进入(1)OAuth2/authorize     获取code(使用get请求)
        点击进入(2)OAuth2/access_token     获取Token(使用post请求)
 
4、保存获取的token,供以后获取微博数据使用。
 
5、返回API首页,进入“微博》statuses/home_timeline”按要求利用token获取微博数据
 
*/

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
//    创建web
    NSURLRequest * requset = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://api.weibo.com/oauth2/authorize?client_id=3025058065&redirect_uri=www.baidu.com"]];
    UIWebView * web = [[UIWebView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:web];
    [web loadRequest:requset];
    web.delegate = self;
}

//每一次获取token都要一个新的code。但是token获取一次就可以了,保存起来。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    
    //截取包含code的网址,并取出code
    NSString * path = request.URL.absoluteString;
    BOOL isCode = [path containsString:@"code="];
    NSString * sub;
    if (isCode)
    {
        NSRange range = [path rangeOfString:@"code="];
        sub = [path substringFromIndex:range.location+5];
        self.code = sub;
        
        //根据code获取token(获取的token保存起来,供下一次运行的时候使用)
        [self getToken];
        
    }
    
    return YES;
}


- (void)getToken
{
    AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
    NSDictionary * dic = @{@"client_id":@"3025058065", @"client_secret":@"867adcfb83eeebe64394629fafefea41", @"grant_type":@"authorization_code", @"code":self.code, @"redirect_uri":@"www.baidu.com"};
    
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];//因为新浪返回的数据没有标记成json类型的,所以这个使用data类型的来接受,否则请求失败。

    [manager POST:@"https://api.weibo.com/oauth2/access_token" parameters:dic success:^(AFHTTPRequestOperation *operation, NSData * responseObject) {

        //json转换成对象
        NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
        self.dic = dic;
        
        //获取微博数据
        [self getStatus];
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"%@", error);
    }];
}


- (void)getStatus
{
    NSString * token = self.dic[@"access_token"];
    NSString * str = [NSString stringWithFormat:@"https://api.weibo.com/2/statuses/home_timeline.json?access_token=%@", token];
    
    //请求微博数据
    AFHTTPRequestOperationManager * manager  = [AFHTTPRequestOperationManager manager];
    [manager GET:str parameters:nil success:^(AFHTTPRequestOperation *operation, NSDictionary * responseObject) {
        
        NSLog(@"-------%@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        NSLog(@"%@", error);
    }];
    
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

新浪微博 OAuth 授权Sample

  • 2011-07-30 20:47
  • 576KB
  • 下载

新浪微博OAUTH2.0授权验证(基于SSO客户端验证)

1.新浪微博开放平台注册应用 微博开放平台的网址为:http://open.weibo.com/apps 应用注册成功之后要填写应用的相关信息 主要有:应用的包名和签名 包名就是eclipse...

面试知识储备:新浪微博OAuth2.0授权认证

OAuth2.0授权 OAuth2.0授权概述 OAuth2.0授权过程 图: 1、首先开发者向一个用户(Resource Owner)发出授权请求,用户同意授权,就返回一个授权许可(Grant)...

iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)

在上一篇中,我们已经完成了UIDialogWindow自定义弹出窗口组件,本篇接下来完成用户的OAuth授权认证功能,完成后效果如上图。       一、新建名为LoginViewControlle...
  • mkhgg
  • mkhgg
  • 2011-08-31 16:42
  • 397

新浪微博OAuth2.0授权

最近学习新浪微博的开发。之前没有使用第三方API开发的经验,多方查阅之后得知要想调用新浪微博官方API首先要进行对自己的应用进行OAuth授权。我对OAuth的理解也不是特别深刻,OAuth是一个为 ...

SSO授权认证分析及与OAuth的表层区别--新浪微博iOS平台举例

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的...

新浪微博Oauth2.0授权 获取Access Token以及API的使用

今天需要使用新浪微博提供的API获取微博的详细信息以及用户的详细信息,所以需要使用API中的/statuses/show接口。 使用新浪微博API的前提是需要到新浪微博开放平台注册一个应用,获得...

新浪微博Oauth2.0授权 获取Access Token以及API的使用

今天需要使用新浪微博提供的API获取微博的详细信息以及用户的详细信息,所以需要使用API中的/statuses/show接口。 使用新浪微博API的前提是需要到新浪微博开放平台注册一个应用,获得...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)