如何在GitHub上托管的Python脚本中保持开发人员密钥的秘密

tar*_*fan 15 python twitter oauth

我正在开发一个开源的Python支持的Twitter客户端,并且使用OAuth访问Twitter API和登录,我已经在Twitter上注册了我的客户端,他们给了我一个独特的消费者密钥和消费者令牌(以下称为"开发人员密钥").这些对我的客户来说是独一无二的,我客户的所有副本都必须使用相同的开发人员密钥.现在,我必须在Python脚本(main.py)中使用开发人员密钥,因为它是一个脚本,所以没有二进制文件.此外,我必须将我的代码上传到GitHub,因为我在GitHub上使用git进行内容跟踪.如何保密我的开发人员密钥?请记住,我计划将相同的客户端分发给用户.

密钥环似乎是最好的选择,但我想要一种方法,只有应用程序才能访问密钥环,甚至不是用户(在应用程序之外).没有人能够通过查看我的代码来弄清楚如何访问密钥环.

注意:"要使用Twitter API,您要做的第一件事就是注册客户端应用程序.您注册的每个客户端应用程序都将配置一个消费者密钥和密钥.此密钥和秘密方案类似于使用的公钥和私钥对于那些熟悉的人来说,在ssh这样的协议中,这个密钥和秘密将与您选择的编程语言中的OAuth库结合使用,来签署您对API所做的每一个请求.通过这个签名过程,我们相信自己确定的流量就是你." - http://dev.twitter.com/pages/auth

Thi*_*ult 7

您可以将OAuth.io用于此目的.

这个概念很简单:

  • 您只需将API密钥放在OAuth.io的密钥管理器中即可
  • 在源代码中,使用OAuth.io的公钥

您的密钥不会以这种方式泄露.

使用Twitter API和OAuth.io查看此博客帖子:http://blog.oauth.io/api-call-using-twitter-api/

完整的示例代码(在javascript中)在JSFiddle上:http://jsfiddle.net/thyb/kZExJ/5

$('button').click(function() {
    OAuth.initialize('oEcDIQahkO4TUAND-yTs-H6oY_M') //OAuth.io public key
    OAuth.popup('twitter', function(err, res) {
        // res contains tokens (res.oauth_token and res.oauth_token_secret)
        res.get('/1.1/statuses/home_timeline.json').done(function(data) {
            // do what you want with data
        })
    })
})
Run Code Online (Sandbox Code Playgroud)


小智 4

扩展阿帕拉拉的答案,我相信这意味着“代理”网络服务。人们向您发送他们的请求,您代表他们签名并将其发送到 Twitter,当然,前提是他们允许您的应用程序访问。

您不必担心人们向您发送垃圾邮件,因为无论如何他们都必须登录 Twitter 才能使用它。

与其他任何地方一样,唯一的问题是我如何足够信任您的应用程序以首先允许它:)