【发布时间】:2013-12-25 08:55:13
【问题描述】:
我有一个 twitter 帐户,其中包含一个应用程序,目前已设置为让学生可以从我们的网站发推文,因此他们的推文在他们的推文底部显示“通过 SchoolAppNameHere”。
是否可以使用 Twython 来使用 Appkey 和密钥,然后从完全不同的地方获取身份验证令牌,所以当我运行下面的代码时,它会从一个没有创建应用程序的帐户发送推文。 ..
from twython import Twython
APP_KEY = ''
APP_SECRET = ''
OAUTH_TOKEN = ''
OAUTH_TOKEN_SECRET = ''
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
twitter.update_status(status="test")
任何想法将不胜感激:)
编辑,更新示例/说明如下:
假设以下图片来自帐户“stackoverflowapp”和名为“Stackoverflow Test App”的应用程序:
使用以下代码将通过名为“Stackoverflow Test App”的应用程序从帐户“stackoverflowapp”和推文“test”发送推文
from twython import Twython
APP_KEY = 'coN_kEY_123456789'
APP_SECRET = 'cOn_sEcr3t_123456789'
OAUTH_TOKEN = 'Acc3ss_tok3N_123456789'
OAUTH_TOKEN_SECRET = 'aCCeSS_tOkEn_sEcrET_123456789'
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
twitter.update_status(status="test")
假设以下图片来自帐户“useraccount1”,应用名为“testing123”:
既然我有访问令牌来登录帐户“useraccount1”,我如何通过用户创建的名为“Stackoverflow 测试应用程序”的应用程序发送推文:我尝试过的“stackoverflowapp”示例如下:
from twython import Twython
APP_KEY = 'coN_kEY_123456789'
APP_SECRET = 'cOn_sEcr3t_123456789'
OAUTH_TOKEN = 'Acc3ss_123456789'
OAUTH_TOKEN_SECRET = 'aCCeSS_sEcrET_123456789'
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
twitter.update_status(status="test update")
不幸的是,我得到了错误:
TwythonAuthError: Twitter API returned a 401 (Unauthorized), Could not authenticate you
【问题讨论】:
-
只要
OAUTH_TOKEN和OAUTH_TOKEN_SECRET已被您的APP_KEY和APP_SECRET对授权,那么您就可以代表该用户发推文。所以你不能做的是使用针对完全不同的应用程序授权的令牌,即令牌在应用程序之间是不可互换的。这有意义吗?还是我错过了什么? -
@soulseekah 我已经更新了我的原始帖子以更详细地显示问题,请参阅我的编辑。
-
这不是 OAuth2 的工作方式。您的“useraccount1”令牌仅对“testing123”有效,不能与“Stackoverflow 测试应用程序”一起使用。您必须明确请求“useraccount1”的令牌。请参阅:tools.ietf.org/html/draft-ietf-oauth-v2-31#section-1.4“访问令牌是用于访问受保护资源的凭据。访问令牌是一个字符串,表示颁发给客户端的授权。”
-
因此,每个令牌都是唯一的,并且表示授权特定消费者(在本例中为您的应用程序)访问特定资源(在本例中为具体用户的 twitter 提要)的协议。你到底想解决什么?听起来像XY problem。
-
@soulseekah 是的,我通过反复试验收集到
useraccount1的令牌仅对testing123应用程序密钥有效。这不是 XY 问题的情况,因为如果有人能够帮助处理 snippits 和/或为我指明更好的方向,我不会“坚持一种方法”。