新浪微博Oauth认证

 实现新浪微博Oauth认证

ViewController.h代码实现如下:

@interface ViewController : UIViewController<UIWebViewDelegate>
@property (strong, nonatomic)  UIWebView *OauthWebView;
@end


ViewController.m文件实现如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
                                                                                                                                                                                                                                   
    self.OauthWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 548)];
    [self.view addSubview:self.OauthWebView];
    //将API放入字符串中
    NSString* urlStr = @"https://api.weibo.com/oauth2/authorize?client_id=3145625561&redirect_uri=http://www.baidu.com&display=mobile";
                                                                                                                                                                                                                                     
    //将字符串转化为URL
    NSURL* url = [NSURL URLWithString:urlStr];
                                                                                                                                                                                                                                     
    //创建请求对象
    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
    self.OauthWebView.delegate = self;
    [self.OauthWebView loadRequest:request];
                                                                                                                                                                                                                                     
}

这时能够出现新浪微博的登陆界面:


我们现在已经能够调用Oauth认证页面了。接下来我们要获取code值。要用UIWebViewDelegate的代理方法


代码实现如下:


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
                                                                               
    NSURL* resultStr = [request URL];
    NSString* tempStr = [resultStr absoluteString];
    NSLog(@"%@",resultStr);
    //判断字符串中是否包含code=
    NSRange range =  [tempStr rangeOfString:@"code="];
    //如果不包含会返回为真,因此此处取反,就是说不为空的时候会为假,取反之后为真
    if ( !(range.location == NSNotFound)) {
        //absoluteString作用是将NSURL类型转化为NSString
        NSString* tempStr = [resultStr absoluteString];
        //componentsSeparatedByString
        NSArray* codeArr =  [tempStr componentsSeparatedByString:@"="];
                                                                                   
                                                                                   
        NSLog(@"%@",codeArr);
        NSString* code = [codeArr objectAtIndex:1];
        NSLog(@"%@",code);
        //之后在此处下一行添加调用获取access_token值的方法即httpRequest:(NSString*)codeStr
    }
    return true;
}

这时,我们就能够拿到code值,这个code值有什么用呢?就看新浪微博的api吧!

之后,我们要完成OAuth认证的最后一步,拿到access_token的值

在实现这个功能之前我们要导入ASIHTTP这个第三方库,怎么导入呢??自己百度吧  一搜一大把。



代码实现如下:

//获取access_token值的方法
-(void)httpRequest:(NSString*)codeStr
{
    //3145625561       0a61cc8a017fa8ba6c98532fefa3c29c
    //http://www.baidu.com     https://api.weibo.com/oauth2/access_token
                                                                     
                                                                     
    NSURL* urlStr = [[NSURL alloc] initWithString:@"https://api.weibo.com/oauth2/access_token"];
                                                                     
                                                                     
    //post请求时要用ASIFormDataRequest类的对象
    //我们要用到__block 就要先用__block来声明并且用到了ARC为了防止内存泄露
    __block ASIFormDataRequest* requestBlock = [[ASIFormDataRequest alloc] initWithURL:urlStr] ;
    //就需要如下这种写法
    __weak  ASIFormDataRequest* request = requestBlock;
                                                                     
                                                                     
    //POST请求放参数的方法
                                                                    
                                                                     
                                                                     
    [request setPostValue:@"3145625561" forKey:@"client_id"];
    [request setPostValue:@"0a61cc8a017fa8ba6c98532fefa3c29c" forKey:@"client_secret"];
    [request setPostValue:@"authorization_code" forKey:@"grant_type"];
                                                                     
    [request setPostValue:codeStr forKey:@"code"];
    [request setPostValue:@"http://www.baidu.com" forKey:@"redirect_uri"];
                                                                     
    //设置代理
    request.delegate = self;
    //startAsynchronous为异步请求
    [request startAsynchronous];
                                                                     
    [request setCompletionBlock:^{
         NSLog(@"%@",[request responseString]);
        NSData* data = [request responseData];
        NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
        NSString* access_tokenString = [dic objectForKey:@"access_token"];
        NSLog(@"%@",access_tokenString);
    }];
                                                                     
}

要记得在

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType


方法中添加   httpRequest方法的调用

这样我们就能够拿到access_token的值了。

OAuth认证到此完成简单吧!!

代码下载地址: "SinaOAuth认证.zip" http://vdisk.weibo.com/s/HrDOj


http://pan.baidu.com/share/link?shareid=3756342609&uk=3189484501


本文出自 “7087095” 博客,请务必保留此出处http://7097095.blog.51cto.com/7087095/1226843

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当用户使用新浪微博进行第三方登录时,需要进行步骤: 1. 注册开发者账号:首先,你需要在新浪微博开放平台注册一个开发者账号,并创建一个应用。 2. 获取App Key和App Secret:在创建应用后,你将获得一个App Key和一个App Secret,这是用于进行身份验证和授权的凭证。 3. 引入SDK:你需要下载并引入新浪微博SDK到你的项目中。SDK提供了一些API和工具,方便你与新浪微博进行交互。 4. 授权登录:在你的应用中,提供一个登录按钮或者其他触发登录的方式。当用户点击登录按钮时,调用新浪微博SDK提供的接口,请求用户授权登录。 5. 获取Access Token:在用户授权登录成功后,你将获得一个Access Token。这个Token可以用来访问用户的个人信息和进行其他操作。 6. 调用API:使用获得的Access Token,你可以调用新浪微博提供的API来获取用户信息、发布微博等操作。 下面是一个简单的示例代码,展示了如何使用新浪微博SDK进行第三方登录: ```java // 引入SDK import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.auth.WbConnectErrorMessage; import com.sina.weibo.sdk.auth.WbConnectObserver; import com.sina.weibo.sdk.auth.WbConnectProgressDialog; import com.sina.weibo.sdk.auth.sso.SsoHandler; import com.sina.weibo.sdk.common.UiError; import com.sina.weibo.sdk.share.WbShareCallback; import com.sina.weibo.sdk.share.WbShareHandler; // 创建SsoHandler对象 private SsoHandler mSsoHandler; // 在登录按钮的点击事件中调用以下代码 mSsoHandler = new SsoHandler(MainActivity.this); mSsoHandler.authorize(new WbConnectObserver() { @Override public void onSuccess(Oauth2AccessToken oauth2AccessToken) { // 登录成功,获取Access Token String accessToken = oauth2AccessToken.getToken(); // TODO: 进行后续操作,如获取用户信息等 } @Override public void onFailure(WbConnectErrorMessage wbConnectErrorMessage) { // 登录失败,处理错误信息 String errorMessage = wbConnectErrorMessage.getErrorMessage(); // TODO: 处理登录失败的情况 } }); // 在Activity的onActivityResult方法中添加以下代码 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } } ``` 请注意,以上代码仅为示例,实际使用时需要根据你的项目需求进行适当修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜甲同学

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值