QAuth2认证 -- ( 不使用友盟等 )自己实现第三方登录(UIWebView)、微博分享、等其他操作

来源:互联网 发布:java包装简历 编辑:程序博客网 时间:2024/05/16 14:22


主要查看开发者平台上得文档,这里举个简单的例子


QAuth2认证,分为两步:

1:第一步:获得请求token;

2:第二步:获得授权token;


//注:更多相关方面的内容,可以到相应的开发者平台上查看文档。


这里使用sina为例,其他的都一样,可以到其他开发者平台注册开发者账号,获取appKay,查看响应的文档即可。


#import "LoginViewController.h"#import "ASIFormDataRequest.h"@interface LoginViewController ()<UIWebViewDelegate, ASIHTTPRequestDelegate>{    UIWebView* _webView;}@end@implementation LoginViewController- (void)viewDidLoad {    [super viewDidLoad];    _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];    _webView.delegate = self;    [self.view addSubview:_webView];    [_webView release];        //请求token的url    NSString* url = @"https://api.weibo.com/oauth2/authorize?client_id=1412145014&redirect_uri=http://www.baidu.com";    NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];    [_webView loadRequest:request];}#pragma mark -- 实现UIWebViewDelegate//当webView  每次加载页面时,即会调用此方法,其中 request.URL.absoluteString 是加载地址- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{    NSArray* array = [request.URL.absoluteString componentsSeparatedByString:@"?code="];    if (array.count == 2) {        //取出请求token        NSString* token = array[1];                //发起请求,获取访问token        ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"https://api.weibo.com/oauth2/access_token"]];        request.delegate = self;        //设置参数        //app key        [request setPostValue:@"1412145014" forKey:@"client_id"];        //app secret        [request setPostValue:@"268b02d5456a899280382fc80c011884" forKey:@"client_secret"];        [request setPostValue:@"authorization_code" forKey:@"grant_type"];        //code        [request setPostValue:token forKey:@"code"];        //redirect_uri        [request setPostValue:@"http://www.baidu.com" forKey:@"redirect_uri"];        //发起请求        [request startAsynchronous];                return NO;    }        return YES;}- (void)requestFinished:(ASIHTTPRequest *)request{    NSLog(@"%@", request.responseString);    NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:request.responseData options:0 error:nil];    //把access_token 存到本地    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];    [userDefaults setObject:dic[@"access_token"] forKey:@"token"];    [userDefaults setObject:dic[@"uid"] forKey:@"uid"];    [userDefaults synchronize];        [self.navigationController popViewControllerAnimated:YES];}- (void)requestFailed:(ASIHTTPRequest *)request{    NSLog(@"请求访问token失败");}@end




0 0
原创粉丝点击