Python 如何在本地针对OAuth进行开发?

Python 如何在本地针对OAuth进行开发?,python,oauth,Python,Oauth,我正在构建一个需要与OAuth服务提供商通信的Python应用程序。SP要求我指定回调URL。指定localhost显然不起作用。我无法设置面向公众的服务器。除了支付服务器/主机费用,还有其他想法吗?这可能吗?这可能会帮助您: 它是php,所以在您的开发服务器上进行设置应该非常简单 我试过一次: 这很简单。在底部有一个下载代码的链接。两件事: 如果您没有指定回调URL,那么所讨论的OAuth服务提供程序会给您一个错误,那么它违反了OAuth规范。回调url为 但是,撇开迂腐不谈,您可能希望在

我正在构建一个需要与OAuth服务提供商通信的Python应用程序。SP要求我指定回调URL。指定localhost显然不起作用。我无法设置面向公众的服务器。除了支付服务器/主机费用,还有其他想法吗?这可能吗?

这可能会帮助您:

它是php,所以在您的开发服务器上进行设置应该非常简单

我试过一次:

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

两件事:

  • 如果您没有指定回调URL,那么所讨论的OAuth服务提供程序会给您一个错误,那么它违反了OAuth规范。回调url为

  • 但是,撇开迂腐不谈,您可能希望在用户完成后得到回调,这样您就知道可以将请求令牌兑换为访问令牌。有很多关于如何做到这一点的信息

  • 即使在第二种情况下,回调URL实际上也不必在互联网上可见。OAuth服务提供商将把用户用来提供用户名/密码的浏览器重定向到回调URL

    两种常见的方法是:

  • 从应用程序中创建一个哑web服务,在某个端口(例如)上侦听完成回调,或者

  • 注册一个协议处理程序(你必须查看你的操作系统的文档,特别是关于如何做这样的事情,但它可以实现类似的功能。)

    localtunnel[port]和voila


    您可以创建两个应用程序吗?一个用于部署,另一个用于测试


    或者,在请求请求令牌时,还可以包括oauth_回调参数。一些提供商将重定向到oauth_回调指定的url(例如Twitter、Google),但一些提供商将忽略此回调url,并重定向到配置期间指定的url(例如Yahoo)

    这是使用Facebook oauth的-我实际上能够指定'http://127.0.0.1:8080'作为站点URL和回调URL。Facebook应用程序的更改花了几分钟才得以传播,但随后就奏效了。

    如果您使用的是*nix风格的系统,请在
    /etc/hosts中创建一个别名,如
    127.0.0.1 mywebsite.dev
    (您需要有与文件中上述内容类似的行,请使用
    http://website.dev/callbackurl/for/app
    在回调URL和本地测试期间。

    因此,我如何解决这个问题(使用BitBucket的OAuth接口)是通过指定本地主机的回调URL(或者任何您真正想要的),然后使用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
    
    你可以从这里刮下誓言验证器

    在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)
    

    我希望这对某人有用!

    这方面的警告(至少对于BitBucket)是,您必须访问URL才能至少在开始时单击“接受”。然后我认为它会记住您的凭据。Windows还有一个主机文件。在Windows 7上,它位于
    C:\Windows\System32\drivers\etc\hosts