OAuth:使用Twitter的API进行安全的用户身份验证,并从网站发送直接消息

问题描述 投票:0回答:1

目标:使用托管网站和本地主机上运行的应用程序的API从我的Twitter帐户发送直接消息。假设我可以在两种情况下重复相同的过程。我已经闲逛了好几个小时,没有获得授权。

显然,要通过API发送Twitter DM,我必须以某种方式向Twitter API提供我的用户名和密码,然后才能授权它进行操作... 对吗?当然,我需要在Twitter API可以代表我行事... 对吗?

如果可以在浏览器中处理整个过程,我将使用Python或JavaScript发出请求。

现在,我的研究...

有趣的页面#1:Basic Auth

我不知道如何使用此页面上的信息来提供我的帐户凭据。与基本身份验证相关的所有StackOverflow研究都得出有关使用cURL的答案。我不想使用cURL,因为上下文是Web应用程序或本地运行的Python脚本。 (如果我可以从浏览器中的JavaScript脚本或localmachine上的Python文件发送cURL请求,那么也许可以,但是我对cURL一无所知。)我在StackOverflow上看到很多人说“基本身份验证”(如其折旧)已贬值,这似乎与“基本身份验证” twitter api文档页面的存在相矛盾...

无论哪种方法,判定:都没有用。

有趣的页面2:Twitter的API文档中的POST direct_messages

此页面对于通过API发送直接消息显然很有用,但是在我获得身份验证令牌之前,我无法使用该信息。我看到我需要提供一些值(YOUR_CONSUMER_KEY, USERS_ACCESS_TOKEN)。

有趣的页面#3:OAuth 1.0a authentication

该页面指出:“ Twitter允许您通过三足式OAuth流获取用户访问令牌,通过将用户重定向到Twitter并让他们授权您的应用程序,您的应用程序可以获得访问令牌和访问令牌的秘密”] >

似乎似乎有用。我看到此过程已在许多Twitter-Automation网络应用程序中使用。您单击一个按钮,该应用即可使用您的帐户执行操作(例如删除推文,删除喜欢的消息)。因此,似乎可以在本地托管的Python脚本或远程Flask服务器上完成该过程了……不?

this page似乎有完整的答案。但是,我看不懂PHP!有人吗?

我目前正尝试在以here开头的可悲地不完整

“演练” this POST request之后执行此操作:
now = str(time.time())


def generate_nonce():
    return str(random.randint(0, 1000000))


request_headers = {"oauth_nonce": generate_nonce(),
                   "oauth_callback": "www.google.ca",
                   "oauth_signature_method": "HMAC-SHA1",
                   "oauth_timestamp": now,
                   "oauth_consumer_key": "my_apps_consumer_key",
                   "oauth_signature": "Pc%2BMLdv028fxCErFyi8KXFM%2BddU%3D",
                   "oauth_version": "1.0"}

y = requests.post("https://api.twitter.com/oauth/request_token", headers=request_headers)

print(y, y.content, y.text)

[结果是400响应,其中{"errors":[{"code":215,"message":"Bad Authentication data."}作为内容/文本。我认为问题是我的oauth_signature,但我不确定。

目标:使用托管网站和本地主机上运行的应用程序的API从我的Twitter帐户发送直接消息。假设我可以在两种情况下重复相同的过程。我是...

javascript python authentication twitter oauth
1个回答
0
投票

[我可以建议使用另一种方法,使用Pathfix,您会发现他们已经很好地分类了连接实现OAuth的复杂性,您所要做的就是获取Twitter clientid和secret并转到其应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.