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);
    }];
    
}

ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录

不管是腾讯还是新浪,查看他们的API,PHP都是有完整的接口,但对C#支持似乎都不是那么完善,都没有,腾讯是完全没有,新浪是提供第三方的,而且后期还不一定升级,NND,用第三方的动辄就一个类库,各种配...
  • YourBer
  • YourBer
  • 2015年09月30日 11:44
  • 3070

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

因为毕业设计要做微博数据采集,现在微博数据获取主要有两种方式:基于官方API和基于网络爬虫,这几天看下如何使用官方API的方式,比较麻烦的是oauth2验证,今天看到一篇帖子,实践了API的使用方式,...
  • tom10073234
  • tom10073234
  • 2016年06月08日 10:59
  • 3635

java基于OAUTH2.0的新浪微博授权认证,新浪微博登录,数据抓取,查看,发微博等

简介:OAUTHA2.0 :新浪微博开放平台提供的一套jishu
  • u013219600
  • u013219600
  • 2014年05月13日 01:06
  • 2246

新浪微博 OAuth 授权Sample

  • 2011年07月30日 20:47
  • 576KB
  • 下载

新浪微博OAuth授权示例代码(asp.net)

  • 2011年07月30日 20:32
  • 1.06MB
  • 下载

Android版新浪微博API(OAuth2.0授权)

  • 2014年05月15日 11:55
  • 4.54MB
  • 下载

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

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

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

今天需要使用新浪微博提供的API获取微博的详细信息以及用户的详细信息,所以需要使用API中的/statuses/show接口。 使用新浪微博API的前提是需要到新浪微博开放平台注册一个应用,获得...
  • nkliming
  • nkliming
  • 2013年11月04日 19:06
  • 1544

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

今天需要使用新浪微博提供的API获取微博的详细信息以及用户的详细信息,所以需要使用API中的/statuses/show接口。 使用新浪微博API的前提是需要到新浪微博开放平台注册一个应用,获得...
  • wb694059179
  • wb694059179
  • 2013年10月31日 09:23
  • 1418

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

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的...
  • Winzlee
  • Winzlee
  • 2015年04月22日 18:42
  • 1832
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OAuth授权详解,以新浪微博为例
举报原因:
原因补充:

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