我怎样才能将秘密令牌捕获到 post 用户推文 - KeyError at / 'oauth_token_secret'
How can i capture the secret token to post users tweet - KeyError at / 'oauth_token_secret'
我构建了一个带有文本区域的 Django 网页,我希望网站的用户能够发布文本区域的内容。
我已经能够 post 使用我自己的帐户(使用开发人员凭据),但是我无法提取用户的秘密令牌(使用 python 社交身份验证登录后获得) , 没有这个他们就做不出 post。
问题似乎是在保存此信息的字典中找不到秘密令牌。请记住,通过 OAuth 登录可以正常工作;过了这一点,我没有做什么,或者做错了什么,这意味着 'oauth_secret_token' 找不到/不存在?
views.py
def form_handle(request):
form = MyForm()
if request.method=='POST':
form = MyForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
text = cd.get('text')
if 'tweet' in request.POST:
user = request.user
soc = user.social_auth.get(provider='twitter')
access_token = soc.extra_data['access_token']
access_secret = soc.extra_data['oauth_token_secret'] <-- error generated here.
post_tweets().post_my_tweet(text, access_token, access_secret)
form = MyForm()
return render(request, 'hello.html',{'form':form})
else:
form = MyForm()
return render(request, 'hello.html',{'form':form})
twitter_posting.py
from twitter import *
class post_tweets():
ckey= "XXXXXXXXXXXXX"
csecret= "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
def post_my_tweet(self, tweet, atoken, asecret):
t = Twitter(auth=OAuth(atoken, asecret, self.ckey, self.csecret))
t.statuses.update(status= str(tweet))
编辑:
我已阅读此处的 Tweepy 文档:http://docs.tweepy.org/en/v3.2.0/auth_tutorial.html
这里还有 Twython 文档:https://twython.readthedocs.org/en/latest/usage/basic_usage.html#updating-status
我相信这两个库都能为我提供帮助,但无法弄清楚如何将其应用到我的代码中。来自这些社区之一的人能否给我一个例子,说明我如何修改它以便它从用户帐户发送推文?
答案是 oauth 令牌和密码在二维字典的第二维内。字典的键称为 'access_token' 它包含五个键值对:'oauth_token'、'oauth_token_secret'、'x_auth_expires'、'user_id' 和 'screen_name' .
因此,这就是您 post 使用 django 从用户帐户发送 Twitter 的方式:
views.py
def form_handle(request):
form = MyForm()
if request.method=='POST':
form = MyForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
text = cd.get('text')
if 'tweet' in request.POST:
user = request.user
soc = user.social_auth.get(provider='twitter')
access_token = soc.extra_data['access_token'] ['oauth_token'] <-- changed
access_secret = soc.extra_data['access_token']['oauth_token_secret'] <-- changed
post_tweets().post_my_tweet(text, access_token, access_secret)
form = MyForm()
return render(request, 'hello.html',{'form':form})
else:
form = MyForm()
return render(request, 'hello.html',{'form':form})
twitter_posting.py 与上面的问题没有变化。如果您想查看登录时返回的推特数据,您可以创建一个打印出所有数据的自定义管道(这就是我解决问题的方法)。在不将其变成管道教程的情况下,我在下面添加了一些有用的链接。
http://psa.matiasaguirre.net/docs/pipeline.html
https://github.com/omab/python-social-auth/tree/master/social/pipeline
我构建了一个带有文本区域的 Django 网页,我希望网站的用户能够发布文本区域的内容。
我已经能够 post 使用我自己的帐户(使用开发人员凭据),但是我无法提取用户的秘密令牌(使用 python 社交身份验证登录后获得) , 没有这个他们就做不出 post。
问题似乎是在保存此信息的字典中找不到秘密令牌。请记住,通过 OAuth 登录可以正常工作;过了这一点,我没有做什么,或者做错了什么,这意味着 'oauth_secret_token' 找不到/不存在?
views.py
def form_handle(request):
form = MyForm()
if request.method=='POST':
form = MyForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
text = cd.get('text')
if 'tweet' in request.POST:
user = request.user
soc = user.social_auth.get(provider='twitter')
access_token = soc.extra_data['access_token']
access_secret = soc.extra_data['oauth_token_secret'] <-- error generated here.
post_tweets().post_my_tweet(text, access_token, access_secret)
form = MyForm()
return render(request, 'hello.html',{'form':form})
else:
form = MyForm()
return render(request, 'hello.html',{'form':form})
twitter_posting.py
from twitter import *
class post_tweets():
ckey= "XXXXXXXXXXXXX"
csecret= "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
def post_my_tweet(self, tweet, atoken, asecret):
t = Twitter(auth=OAuth(atoken, asecret, self.ckey, self.csecret))
t.statuses.update(status= str(tweet))
编辑:
我已阅读此处的 Tweepy 文档:http://docs.tweepy.org/en/v3.2.0/auth_tutorial.html
这里还有 Twython 文档:https://twython.readthedocs.org/en/latest/usage/basic_usage.html#updating-status
我相信这两个库都能为我提供帮助,但无法弄清楚如何将其应用到我的代码中。来自这些社区之一的人能否给我一个例子,说明我如何修改它以便它从用户帐户发送推文?
答案是 oauth 令牌和密码在二维字典的第二维内。字典的键称为 'access_token' 它包含五个键值对:'oauth_token'、'oauth_token_secret'、'x_auth_expires'、'user_id' 和 'screen_name' .
因此,这就是您 post 使用 django 从用户帐户发送 Twitter 的方式:
views.py
def form_handle(request):
form = MyForm()
if request.method=='POST':
form = MyForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
text = cd.get('text')
if 'tweet' in request.POST:
user = request.user
soc = user.social_auth.get(provider='twitter')
access_token = soc.extra_data['access_token'] ['oauth_token'] <-- changed
access_secret = soc.extra_data['access_token']['oauth_token_secret'] <-- changed
post_tweets().post_my_tweet(text, access_token, access_secret)
form = MyForm()
return render(request, 'hello.html',{'form':form})
else:
form = MyForm()
return render(request, 'hello.html',{'form':form})
twitter_posting.py 与上面的问题没有变化。如果您想查看登录时返回的推特数据,您可以创建一个打印出所有数据的自定义管道(这就是我解决问题的方法)。在不将其变成管道教程的情况下,我在下面添加了一些有用的链接。
http://psa.matiasaguirre.net/docs/pipeline.html https://github.com/omab/python-social-auth/tree/master/social/pipeline