我正在研究用Python编写的应用程序模块(它是开源的)。我希望该模块允许用户登录Twitter并更新状态(发布推文)。我有使用twitter导入编写的Python脚本,需要开发人员(我)输入消费者/身份验证令牌/秘密。我不希望将令牌预先编程到模块中,而是让用户登录以更新其状态(显然)。
我需要一个大方向去追求。我设想用户点击共享!菜单选项,浏览器弹出Twitter登录页面,登录用户和存储凭据的应用程序,然后从那里更新状态。我有模块工作,但就像我之前说的,我需要从我的应用程序的apps.twitter.com页面输入令牌信息。我希望用户能够登录。
以下是使用twython库的代码片段:
from twython import Twython
#APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET
OAUTH_TOKEN = '...'
OAUTH_TOKEN_SECRET = '...'
APP_KEY = '...'
APP_SECRET = '...'
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
if (twitter.update_status(status='The status is updated from Python!')):
print("Working!")
else:
print("Not working!")
上面的代码可以运行并更新我的Twitter状态,但我不希望此模块的其他用户更新我的状态,而是让他们登录并更新其状态。
提前致谢。
EDIT 我现在拥有的:
import urllib.parse
import oauth2 as oauth
consumer_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'
consumer_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
request_token_url = 'https://api.twitter.com/oauth/request_token'
access_token_url = 'https://api.twitter.com/oauth/access_token'
authorize_url = 'https://api.twitter.com/oauth/authorize'
consumer = oauth.Consumer(consumer_key, consumer_secret)
client = oauth.Client(consumer)
resp, content = client.request(request_token_url, "GET")
if resp['status'] != '200':
raise Exception("Invalid response %s." % resp['status'])
request_token = dict(urllib.parse.parse_qsl(content))
print("Request Token:")
print(" - oauth_token = %s" % request_token[b'oauth_token'].decode())
print(" - oauth_token_secret = %s" % request_token[b'oauth_token_secret'].decode())
print("Go to the following link in your browser:")
print("%s?oauth_token=%s" % (authorize_url, request_token[b'oauth_token'].decode()))
accepted = 'n'
while accepted.lower() == 'n':
accepted = input('Have you authorized me? (y/n) ')
oauth_verifier = input('What is the PIN? ')
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
token.set_verifier(oauth_verifier)
client = oauth.Client(consumer, token)
resp, content = client.request(access_token_url, "POST")
access_token = dict(urllib.parse.parse_qsl(content))
print(access_token.keys())
print(access_token.values())
print("You may now access protected resources using the access tokens above.")
import twitter
api = twitter.Api(consumer_key=' ', consumer_secret=' ',
access_token_key=' ', access_token_secret=' ')
tweet = api.PostUpdate("First tweet from an authenticated user.")
我到达了使用登录授权我的应用程序的地步,网页重定向到callback_url,就像它应该的那样,但我没有输入PIN。它来自哪里?
答案 0 :(得分:-1)
我很晚才知道,但是可以帮助别人
您可以在应用验证后找到验证令牌,该令牌将显示在标题中。