search
HomeDatabaseMysql TutorialIOS最新新浪微博开放平台Oauth2.0授权获取Access

很久没写博客,最近在搞一个新浪微博的第三方应用,涉及到了Oauth2.0授权获取Access_Token,特此记录分享! 步骤一:添加应用 进入新浪微博开放平台(没有的话自行注册),进入“管理中心“,点击”创建应用”,选择“微链接应用”,再点击“创建应用”,,

很久没写博客,最近在搞一个新浪微博的第三方应用,涉及到了Oauth2.0授权获取Access_Token,特此记录分享!

步骤一:添加应用

进入新浪微博开放平台(没有的话自行注册),进入“管理中心“,点击”创建应用”,选择“微链接应用”,再点击“创建应用”,,选“移动应用”,填写相应的信息,其中应用地址没有的话可随便,勾选平台后提交。注意保存你的App Key和App Secret以备后用。

步骤二:Oauth2.0授权设置

应用创建完后可以在“管理中心”-“我的应用”中查看信息,在“应用信息”--“高级信息”中可以设置网站的授权回调页和取消授权回调页。授权回调页会在用户授权成功后会被回调,同时传回一个“code”参数,开发者可以用code换取Access_Token值。当然如果是移动应用,比如本文是没有自己授权回调页的,建议这里填:https://api.weibo.com/oauth2/default.html 或者 http://www.baidu.com 之类的。如果授权后传回的形式如下:

https://api.weibo.com/oauth2/default.html?code=a6146547f981199c07348837b0629d5d

我们只要获取其中code的值a6146547f981199c07348837b0629d5d即可,注意code的值每次都是不一样的。

步骤三:引导用户授权

引导需要授权的用户到如下页面:
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
YOUR_CLIENT_ID:即应用的AppKey,可以在应用基本信息里查看到。
YOUR_REGISTERED_REDIRECT_URI:即之前填写的授权回调页,注意一定要和你在开发平台填写的完全相同,这里以https://api.weibo.com/oauth2/default.html 为例。
如果用户授权成功后,会跳转到回调页,开发者此时需要得到url参数中的code值,注意code只能使用一次。

步骤四:换取Access Token

开发者可以访问如下页面得到Access Token:
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
YOUR_CLIENT_ID:即应用的AppKey,可以在应用基本信息里查看到。
YOUR_CLIENT_SECRET:即应用的App Secret,可以在应用基本信息里查看到。
YOUR_REGISTERED_REDIRECT_URI:即之前填写的授权回调页
code:就是步骤三引导用户授权后回传的code。
如果都没有问题,就可以得到Access Token了,返回示例:
{
       "access_token": "ACCESS_TOKEN",
       "expires_in": 1234,
       "remind_in":"798114",
       "uid":"12341234"
 }


最后做了一个Xcode 5.0 storyboard的demo,用到一个UIViewController和一个UIWebView。

看代码如下:

#import <uikit>

@interface OAuthWebViewController : UIViewController<uiwebviewdelegate>

@property (weak, nonatomic) IBOutlet UIWebView *webView;

@end</uiwebviewdelegate></uikit>

#import "OAuthWebViewController.h"

@implementation OAuthWebViewController
@synthesize webView;

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    NSString *url = @"https://api.weibo.com/oauth2/authorize?client_id=3693781153&redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code&display=mobile";
    
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
    [self.webView setDelegate:self];
    [self.webView loadRequest:request];

}

-(void)viewDidLoad
{
    [super viewDidLoad];
}

#pragma mark - UIWebView Delegate Methods

-(void)webViewDidFinishLoad:(UIWebView *)_webView
{
    NSString *url = _webView.request.URL.absoluteString;
    NSLog(@"absoluteString:%@",url);
    
    if ([url hasPrefix:@"https://api.weibo.com/oauth2/default.html?"]) {
        
        //找到”code=“的range
        NSRange rangeOne;
        rangeOne=[url rangeOfString:@"code="];
        
        //根据他“code=”的range确定code参数的值的range
        NSRange range = NSMakeRange(rangeOne.length+rangeOne.location, url.length-(rangeOne.length+rangeOne.location));
        //获取code值
        NSString *codeString = [url substringWithRange:range];
        NSLog(@"code = :%@",codeString);
        
        //access token调用URL的string
        NSMutableString *muString = [[NSMutableString alloc] initWithString:@"https://api.weibo.com/oauth2/access_token?client_id=3693781153&client_secret=7954135ee119b1fd068b8f41d2de5672&grant_type=authorization_code&redirect_uri=https://api.weibo.com/oauth2/default.html&code="];
        [muString appendString:codeString];
        NSLog(@"access token url :%@",muString);
        
        //第一步,创建URL
        NSURL *urlstring = [NSURL URLWithString:muString];
        //第二步,创建请求
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:urlstring cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
        [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET
        NSString *str = @"type=focus-c";//设置参数
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
        [request setHTTPBody:data];
        //第三步,连接服务器
        NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        
        NSString *str1 = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
        NSLog(@"Back String :%@",str1);
        
        NSError *error;
        //如何从str1中获取到access_token
        NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:received options:NSJSONReadingMutableContainers error:&error];
        
        NSString *_access_token = [dictionary objectForKey:@"access_token"];
        NSLog(@"access token is:%@",_access_token);
        
    }
}

@end

来几张图:

IOS最新新浪微博开放平台Oauth2.0授权获取Access

IOS最新新浪微博开放平台Oauth2.0授权获取Access

IOS最新新浪微博开放平台Oauth2.0授权获取Access


demo下载地址:http://download.csdn.net/detail/wangqiuyun/6851621

注意替换为你的AppKey和App Secret。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何在 iPhone 上的 Always-on Display 上关闭墙纸和通知如何在 iPhone 上的 Always-on Display 上关闭墙纸和通知Apr 16, 2023 pm 11:07 PM

iOS16是Apple移动设备的重大更新,因为它不仅引入了新功能,还为iPhone14Pro和ProMax带来了独家功能。这些新款iPhone是Apple首款配备常亮显示屏的iPhone。苹果对AOD的看法略有不同,不是整个屏幕变黑,而是显示变暗,刷新率动态降低到1Hz。不用说,这并不适合世界各地的许多用户和评论者,因为大多数人会不经意地检查他们的手机,并假设这是一条通知而不是AOD。Apple似乎已经在最新版本的iOS16中认识到并纠正了这个问题,增加

如何在 iPhone 上更改数字格式如何在 iPhone 上更改数字格式Apr 13, 2023 pm 06:16 PM

您可以在 iOS 16 上选择哪些数字格式随着对 iOS 16.4 (beta 2) 的更改,您可以为您的 iPhone 选择三种不同的数字格式。这些格式使用空格、逗号和句点作为分隔数字中千位的符号或作为小数点。小数点是用于将值的整数部分与其小数部分分开的字符,通常由句点 (.) 或逗号 (,) 分配。千位分隔符用于将多位数的数字分成三组,通常由句点 (.)、逗号 (,) 或空格 ( ) 指定。 在最新版本的 iOS 上,您将能够应用以下任何一种数字格式作为您 iPhone 的首选选项:1,23

如何在 iOS 15 中阻止电话号码如何在 iOS 15 中阻止电话号码Apr 13, 2023 am 11:37 AM

虽然不需要的电话是日常生活的一部分,但您的 iPhone 提供了一些不同的选项来使特别顽固的来电者静音。这是在iOS 15上阻止或静音不需要的电话的方法。屏蔽电话号码可以为您减轻很多压力。一旦被阻止,您将不会收到来自被阻止号码的任何呼叫的提醒。此外,呼叫者将被允许留下语音邮件,但您不会收到已留下语音邮件的通知。打开电话应用滚动到您要阻止的号码点击号码旁边的信息图标向下滚动并点按阻止此来电者点击阻止联系人您也可以在FaceTime应用程序中按照相同的步骤来阻止持续的 FaceTime 呼叫者。被屏

Chrome 未安装在 iPad 上:3 种轻松修复它的方法Chrome 未安装在 iPad 上:3 种轻松修复它的方法Apr 14, 2023 pm 03:13 PM

浏览互联网已成为我们大多数人的第二天性,我们目前生活在一个时代,它已成为我们所做的几乎所有事情的代名词。它不仅是我们用来购物,或与亲朋好友相聚的地方,它也成为了一种宝贵的工作用具。自从COVID-19大流行开始,混合工作成为新常态以来,浏览器和通信软件已成为我们与同事之间的新纽带。而且,在我们所有流行的浏览器选择中,绝大多数用户决定使用谷歌的Chrome。现在,您不一定需要运行Microsoft支持的操作系统才能使用Chrome,因为该软件也可以在其他软件上正常运行。话虽这么说,如果您尝试在

适用于 iOS 的微软待办通过滚动改进等进行了更新适用于 iOS 的微软待办通过滚动改进等进行了更新Apr 14, 2023 am 09:37 AM

微软待办已收到 iOS 更新,将版本升级至 2.75,并添加了一些值得注意的更改。最新版本的任务管理应用程序提供更流畅的体验。这是因为微软在最新版本的应用程序中引入了滚动改进。除此之外,最新版本还可能带有错误修复和改进。您可以在下面阅读完整的官方变更日志。微软待办 2.75 版几个月前,微软更新了它的 To Do iOS 应用程序,让用户更容易为他们的任务添加注释。它旨在为您的

iOS 16 中的 Apple Wallet 让你离抛弃你的钱包更近了一步iOS 16 中的 Apple Wallet 让你离抛弃你的钱包更近了一步Apr 14, 2023 am 08:22 AM

iOS 16 已经准备好再次推动你放弃实体钱包。对 iOS 16 所做的更改包括一些仅限于美国地区的功能,但苹果也愿意将其部分功能开放给其他平台。首先,马里兰州和亚利桑那州现在支持 Apple 的数字身份验证服务 Wallet ID。除了这两个,Apple 还表示很快还会有另外 11 个,但没有任何关于哪些州的进一步信息。钱包 ID 也可以在 Uber 等应用中使用,并且不必分享您的具体信息。例如,它可以说您已超过 21 岁,但不提供您的实际年龄。Apple Wallet 中的数字密钥也可以通过

ios是linux系统吗ios是linux系统吗Nov 19, 2021 pm 03:14 PM

ios不是linux,ios实际上是Darwin的ARM变体,源自BSD,类UNIX内核以及Apple自己的Mach内核扩展系统;这与Linux是完全不同的,Linux是一个单片内核,所有驱动程序代码和I/O工具包都是核心内核的一部分。

iOS 16.2 引入“自定义辅助功能模式”,为 iPhone 和 iPad 提供简化的体验iOS 16.2 引入“自定义辅助功能模式”,为 iPhone 和 iPad 提供简化的体验Apr 13, 2023 am 11:07 AM

苹果公司周二向开发人员发布了iOS 16.2 beta 2,因为该公司准备在 12 月向公众提供更新。正式地,它添加了新的 Freeform 协作应用程序和对 Home 应用程序的改进。在后台,9to5Mac发现 Apple 一直在开发一种新的“自定义辅助功能模式”,该模式将为 iPhone 和 iPad 提供“流线型”体验。自定义辅助功能模式这种代号为“Clarity”的新模式基本上用更精简的模式取代了 Springboard(这是 iOS 的主要界面)。该功能在当前测试版中仍对用户不可用,将

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)