可以通过twython从其他帐户使用appkey / secret密钥进行推文吗?

时间:2013-12-08 06:06:19

标签: twitter twython

我有一个推特应用程序的推特帐户,目前正在设置,以便学生可以从我们的网站发推文,因此他们的推文在他们的推文底部显示“通过SchoolAppNameHere”。

是否可以使用Twython来使用Appkey和密钥,然后从完全不同的方式获取auth令牌,所以当我在下面运行一些代码时,它会从一个帐户发布不创建应用程序的内容。 ..

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”的应用程序:

http://i.imgur.com/8sIpak5.png http://i.imgur.com/e6CYt6e.png

使用以下位代码将通过名为“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”:

http://i.imgur.com/vYJLmfr.png

所以现在我有访问令牌登录帐户“useraccount1”,我怎么能通过用户创建的名为“Stackoverflow test app”的应用程序发推文:“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

1 个答案:

答案 0 :(得分:3)

这当然是可能的。当您在Twitter中创建应用程序时,为方便起见,它们会为您提供您自己的身份验证令牌,以便您立即使用。

  

使用访问令牌字符串作为“oauth_token”,将访问令牌密码用作“oauth_token_secret”,以使用您自己的Twitter帐户对请求进行签名。不要与任何人分享你的oauth_token_secret。

要获取同一应用程序的其他帐户的密钥,您需要为每个帐户请求更多密钥。这在此处详细描述:https://dev.twitter.com/docs/auth/obtaining-access-tokens

由于听起来您自己会进行授权,因此应该使用更简单的PIN-based方法。

您正在使用twython,可以使用该库来完成这些操作:https://twython.readthedocs.org/en/latest/usage/starting_out.html#authentication

get_authentication_tokensget_authorized_tokens是您正在寻找的方法。

from twython import Twython
import sys

APP_KEY = 'coN_kEY_123456789'
APP_SECRET = 'cOn_sEcr3t_123456789'

twitter = Twython( APP_KEY, APP_SECRET )
auth = twitter.get_authentication_tokens()

print( 'Visit %s and enter your PIN: ' % auth.get( 'auth_url' ) ),
pin = sys.stdin.readline().strip()

twitter = Twython( APP_KEY, APP_SECRET, auth.get( 'oauth_token' ), auth.get( 'oauth_token_secret' ) )
tokens = twitter.get_authorized_tokens( pin )

print( 'OAUTH_TOKEN: %s' % tokens.get( 'oauth_token' ) )
print( 'OAUTH_TOKEN_SECRET: %s' % tokens.get( 'oauth_token_secret' ) )

OAUTH_TOKENOAUTH_TOKEN_SECRET存放在某个地方,并随意重复使用。另外,请确保在访问URL并获取PIN时授权正确的帐户。

您的所有API调用都将在bahalf上通过令牌授权访问,并且您的via行将是您的原始应用程序。对于您要发布的每个帐户使用相应的令牌,无法混合搭配。