3

我有一个 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”的应用程序:

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 测试应用程序”的应用程序发送推文:我尝试的“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
4

1 回答 1

3

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

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

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

由于听起来您将自己进行授权,因此可能应该使用更简单的基于 PIN 的方法。

您正在使用twython,可以使用库来获得这些:https ://twython.readthedocs.org/en/latest/usage/starting_out.html#authentication

get_authentication_tokens并且get_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 调用都将在通过令牌授权访问的帐户上进行,您的via线路将是您的原始应用程序。为您想从中发推文的每个帐户使用适当的令牌,不可能混合和匹配。

于 2013-12-17T07:54:00.713 回答