什么是重定向URI?它如何应用于iOS应用程序的OAuth2.0?

198

作为一个初学者程序员,在此请谅解我的无知,希望能提供一些解释 :)

我试着阅读某个OAuth 2.0服务的教程,但是我不理解这个重定向URI……在我的情境中,假设我正在尝试构建一个使用OAuth 2.0的iPhone应用程序来访问某项服务。我有一个生成的应用ID,但我需要提供某种重定向URI来生成API密钥。

这是我应该自己托管的URL吗?正如其名称所示,我认为重定向URL应该“重定向”某人到某处。我的唯一猜测就是它是用户登录后被重定向到的URL。

但是,即使这个假设是正确的,我还是不理解另一件事情——在我将他们发送到浏览器进行用户登录后,我的应用程序如何再次打开?

4个回答

201

请阅读:

http://www.quora.com/OAuth-2-0/How-does-OAuth-2-0-work

或者更简单但更快的解释:

http://agileanswer.blogspot.se/2012/08/oauth-20-for-my-ninth-grader.html

重定向 URI 是应用程序的回调入口点。想想 Facebook 的 OAuth 如何工作 - 在最终用户接受权限后,Facebook 必须调用 "某些东西" 才能返回到应用程序,而这个 "某些东西" 就是重定向 URI。此外,重定向 URI 应与应用程序的初始入口点不同。

这个谜团的另一个关键点是您可以通过 WebView 给定的 URL 启动应用程序。为此,我只需按照这里的指南执行:

http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

http://inchoo.net/mobile-development/iphone-development/launching-application-via-url-scheme/

注意:在最后两个链接上,"http://" 可以打开移动 Safari,但 "tel://" 在模拟器中无法工作。

在第一个应用程序中,我调用

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"secondApp://"]];

在我的第二个应用程序中,我将“secondApp”(而不是“secondApp://”)注册为URL Scheme的名称,并以我的公司作为URL标识符。


1
那么,您需要在redirect_uri中设置自己的网站,是这样吗? - huggie
1
在iOS应用程序的上下文中,不需要拥有自己的网站,你只需要意识到你的iOS应用程序可以从Web浏览器给定的URL中打开。阅读:http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html - David T.
1
@Nazerke 可能它已经为你添加了“://”。所以你只需要方案名称。 - David T.
1
有人请修复这个答案--http://architecture-soa-bpm-eai.blogspot.com.br/2012/08/oauth-20-for-my-ninth-grader.html已经不存在了。 - Leo
2
嗨@DavidT。回答很好。我唯一的担心,并希望你可以帮助我解决的问题是如何配置强制使用http://的URI方案,比如[YouTube, Instagram, LinkedIn]? 我尝试注册例如http://localhost/oauth2callback重定向,以及http,localhost或oauth2callback方案,但它们都没有起作用。 - Tal Zion
显示剩余5条评论

10

9

重定向URI是用户成功登录到您的应用程序后将被重定向的位置。例如,在Facebook中获取您的应用程序的访问令牌,您需要提交重定向URI,这只是您创建Facebook应用程序时提供的应用程序域。


当移动应用程序希望将凭证(即访问令牌和刷新令牌)发送到后端时,移动应用程序流程中的redirect_uri是什么? 它是我的后端端点还是与移动应用程序相关的内容? - Benyamin Jafari

2
如果您正在使用Facebook SDK,您无需在Facebook应用程序管理页面上输入任何内容以获取重定向URI。只需为您的iOS应用程序设置URL方案即可。 您的应用程序的URL方案应该是一个值“fbxxxxxxxxxxx”,其中xxxxxxxxxx是您在Facebook上识别的应用程序ID。 要为您的iOS应用程序设置URL方案,请转到应用设置的信息选项卡并添加URL类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接