Django 응용 프로그램을 작성하고 Twitter 사용자가 양식을 제출할 때 twython-django를 사용하여 인증하려고합니다. 나는이 예제의 https://github.com/ryanmcgrath/twython-django/tree/master/twython_django_oauth에서 제안한대로 views.py, urls.py 및 models.py 파일을 편집하려고 시도했지만 간단히 추측하고 있으므로 작동하지 않는 것입니다.twython-django를 사용하여 사용자가 양식을 제출할 때 사용자 인증
이 방법을 사용하는 방법을 알려주십시오. 나는 모든 트위터 래퍼에 대해 완전히 새롭다. 그래서 어떤 도움이라도 대단히 감사 할 것이다.
내가 달성하기 위해 노력하고있어 흐름:
- 사용자는
- 사용자가 타격에 자신의 트위터 계정을 인증하도록 요청하는 양식을 통해 메시지를 전송 버튼
- 사용자의 메시지를 "제출", 트위터 이름, 트위터 screen_name, profile_image_url 및 followers_count가 데이터베이스에 저장됩니다. (Heroku Postgres를 사용하고 있습니다.)
- 사용자의 프로필 이미지, 이름, screen_name 및 메시지는 (Twitter와 같은) 피드에서 index.html에 인쇄됩니다.
내 views.py :
def logout(request, redirect_url=settings.LOGOUT_REDIRECT_URL):
django_logout(request)
return HttpResponseRedirect(request.build_absolute_uri(redirect_url))
def submit(request):
twitter = Twython(
twitter_token=settings.TWITTER_KEY,
twitter_secret=settings.TWITTER_SECRET,
callback_url=request.build_absolute_uri(reverse('alpha.views.submit'))
)
auth_props = twitter.get_authentication_tokens()
request.session['request_token'] = auth_props
return HttpResponseRedirect(auth_props['auth_url'])
form = MessageForm(request.session.get('message'))
if form.is_valid():
new_message = form.save()
return HttpResponseRedirect('/')
else:
request.session['message'] = request.POST
twitter = Twython(
twitter_token = settings.TWITTER_KEY,
twitter_secret = settings.TWITTER_SECRET,
oauth_token = request.session['request_token']['oauth_token'],
oauth_token_secret = request.session['request_token']['oauth_token_secret'],
)
authorized_tokens = twitter.get_authentication_tokens()
try:
user = User.objects.get(username = authorized_tokens['screen_name'])
except User.DoesNotExist:
user = User.objects.create_user(authorized_tokens['screen_name'], authorized_tokens['oauth_token_secret'])
profile = Message()
profile.user = user
profile.name = name
profile.profile_image_url = profile_image_url
profile.oauth_token = authorized_tokens['oauth_token']
profile.oauth_secret = authorized_tokens['oauth_token_secret']
profile.save()
user = authenticate(
username = authorized_tokens['screen_name'],
password = authorized_tokens['oauth_token_secret']
)
login(request, user)
return HttpResponseRedirect(redirect_url)
면책 조항 : 위의 코드는 아마 완전한 혼란 그래서 저는 초보자입니다!
twython-django는 실제로 twython을 감싸는 얇은 래퍼이며 트위터 API에 연결하는 것이 좋습니다. 여기에 제시된 단계 (https://github.com/ryanmcgrath/twython-django)를 따랐습니까? 그런 다음 올바른 URL을 누르면 Twitter 인증 사이트로 리디렉션 된 다음 callback_url로 돌아와야합니다. 그것이 작동하면 올바른 방향으로 가고 있습니다. – PepperoniPizza
@PepperoniPizza 예, 나는 거기의 단계를 따라 갔지만 twython-django 예제의 코드를 기존 양식으로 작업하려고했습니다 (위에서 볼 수 있듯이). 그게 잘못된 일이야? twython-django 예제가 사용자가 아무것도 제출하기 전에 로그인/인증 할 때만 유효한지 확실하지 않았습니다. 데이터를 제출 한 후 (제출 버튼을 누를 때) 사용자가 트위터를 인증하도록 요청합니다. 어리석은 질문이라면 죄송합니다. 그러나 트위터 래퍼에 대한 경험이 없으므로 순간적으로 내 머리를 쓰려고합니다. – Jess