我如何在本地开发OAuth?

我正在构build一个需要与OAuth服务提供者进行通信的Python应用程序。 SP要求我指定一个callbackURL。 指定localhost显然是行不通的。 我无法build立一个面向公众的服务器。 除了支付服务器/托pipe任何想法? 这甚至有可能吗?

两件事情:

  1. 如果您没有指定回叫url,则有问题的OAuth服务提供商会违反OAuth规范。 callback_url被指定为可选参数 。

  2. 但是,除了习惯之外,您可能希望在用户完成时获得回叫,以便您知道可以为访问令牌兑换请求令牌。 雅虎的FireEagle开发人员文档有很多关于如何做到这一点的信息。

即使在第二种情况下,callbackURL实际上也不必从互联网上可见。 OAuth服务提供商将redirect用户使用的浏览器将其用户名/密码提供给callbackURL。

两种常见的方法是:

  1. 从应用程序中创build一个愚蠢的Web服务,在监听某个端口(例如http:// localhost:1234 / )上完成callback,或者
  2. 注册一个协议处理程序(您将必须检查您的操作系统的文档,具体如何做这样的事情,但它使像<a href="skype:555-1212">工作)的东西。

(我相信你在这里描述生命的stream程的一个例子。)

如果您使用的是* nix风格的系统,请在/etc/hosts创build一个类似于127.0.0.1 mywebsite.dev的别名(您需要具有与上述类似的行,请使用http://website.dev/callbackurl/for/app在回拨URL和本地testing期间。

这是与Facebook的OAuth – 我实际上能够指定“http://127.0.0.1:8080”作为网站的URL和callbackURL。; Facebook应用程序的更改需要花费几分钟才能传播,但后来运行。

这可以帮助你:

http://www.marcworrell.com/article-2990-en.html

这是PHP,所以应该是非常简单的设置在你的开发服务器上。

我曾经试过这个:

http://term.ie/oauth/example/

这很简单。 你有一个链接来下载底部的代码。

你可以创build2个应用程序? 1用于部署,另一个用于testing。

或者,您也可以在请求请求令牌时包含一个oauth_callback参数。 一些提供商将redirect到oauth_callback指定的url(例如Twitter,Google),但有些提供商会忽略这个callbackurl并redirect到configuration期间指定的url(例如Yahoo)

所以我如何解决这个问题(使用BitBucket的OAuth接口)是通过指定本地主机的callbackURL(或者任何你想要的),然后用curl跟随授权URL,但只是返回HTTP头。 例:

 curl --user BitbucketUsername:BitbucketPassword -sL -w "%{http_code} %{url_effective}\\n" "AUTH_URL" -o /dev/null 

插入您的凭据和授权url(请记住转义感叹号!)。

你应该得到的是这样的:

 200 http://localhost?dump&oauth_verifier=OATH_VERIFIER&oauth_token=OATH_TOKEN 

而且你可以从这个刮oath_verifier。

在Python中做同样的事情:

 import pycurl devnull = open('/dev/null', 'w') c = pycurl.Curl() c.setopt(pycurl.WRITEFUNCTION, devnull.write) c.setopt(c.USERPWD, "BBUSERNAME:BBPASSWORD") c.setopt(pycurl.URL, authorize_url) c.setopt(pycurl.FOLLOWLOCATION, 1) c.perform() print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL) 

我希望这对某个人有用!