在GPL桌面应用程序中处理Twitter API密钥的标准方法是什么?

Yia*_*vas 5 twitter desktop-application twitter-oauth

在开发需要访问twitter API的桌面应用程序时,必须以某种方式将应用程序的API密钥(特定于应用程序的用户密钥和使用者密钥)传递给用户.Twitter的API TOS声明应用程序的API密钥无法公开,如果发生这种情况,他们会重置它.当该应用程序在GPL下时,意味着开发人员需要向用户提供源代码,该用户如何在不公开可用的情况下获取API密钥?有没有一种标准的方法来处理这个问题?谢谢.

编辑:为了澄清这种情况,我在我的代码中将它们以纯文本形式存储在cree.py中,直到有意识的决定.但昨天Twitter支持团队联系我说他们已经重置了我的密钥,他们的推理如下:

C.您不应该征求其他开发人员的消费者密钥或消费者保密信息,特别是如果他们将被存储或用于开发人员无法控制的行为.被破坏的密钥和秘密将由Twitter重置.例如,不允许在线服务要求提供这些值以提供"推特 - 品牌"服务. https://dev.twitter.com/terms/api-terms 如果应用程序的密钥是公开发布的,则允许外部各方劫持应用程序的API访问权限.这会带来巨大的滥用风险,因此我们会重置您的API密钥.请注意确保这些密钥不会再次公开发布.

谢谢,Twitter API政策

Sam*_*amB 1

嗯,TTYtter显然使用了荣誉系统:

# yes, this is plaintext. obfuscation would be ludicrously easy to crack,
# and there is no way to hide them effectively or fully in a Perl script.
# so be a good neighbour and leave this the fark alone, okay? stealing
# credentials is mean and inconvenient to users. this is blessed by
# arrangement with Twitter. don't be a d*ck. thanks for your cooperation.
$oauthkey = (!length($oauthkey) || $oauthkey eq 'X') ?
        "XXXXXXXXXXXXXXXXXXXXX" : $oauthkey;
$oauthsecret = (!length($oauthsecret) || $oauthsecret eq 'X') ?
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" : $oauthsecret;
Run Code Online (Sandbox Code Playgroud)

(我已经用 X 替换了实际的密钥,以减少任何人不厌其烦地滥用它们的可能性,但请放心,它们在实际源代码中完整存在!)

另外,我在道路规则中没有看到任何实际要求你对这些事情保密的内容:我看到的最接近的是“被泄露的密钥和秘密将由 Twitter 重置”的声明。不过,他们从未真正说出“妥协”的含义。