Revision 1c4e8364 snf-astakos-app/astakos/im/target/twitter.py
b/snf-astakos-app/astakos/im/target/twitter.py | ||
---|---|---|
63 | 63 |
|
64 | 64 |
import oauth2 as oauth |
65 | 65 |
import cgi |
66 |
import urllib |
|
66 | 67 |
|
67 | 68 |
consumer = oauth.Consumer(settings.TWITTER_TOKEN, settings.TWITTER_SECRET) |
68 | 69 |
client = oauth.Client(consumer) |
... | ... | |
71 | 72 |
access_token_url = 'http://twitter.com/oauth/access_token' |
72 | 73 |
authenticate_url = 'http://twitter.com/oauth/authenticate' |
73 | 74 |
|
74 |
|
|
75 | 75 |
@requires_auth_provider('twitter', login=True) |
76 | 76 |
@require_http_methods(["GET", "POST"]) |
77 | 77 |
def login(request): |
78 |
force_login = request.GET.get('force_login', |
|
79 |
settings.TWITTER_AUTH_FORCE_LOGIN) |
|
78 | 80 |
resp, content = client.request(request_token_url, "GET") |
79 | 81 |
if resp['status'] != '200': |
80 | 82 |
messages.error(request, 'Invalid Twitter response') |
81 | 83 |
return HttpResponseRedirect(reverse('edit_profile')) |
82 | 84 |
|
83 | 85 |
request.session['request_token'] = dict(cgi.parse_qsl(content)) |
84 |
url = "%s?oauth_token=%s" % (authenticate_url, |
|
85 |
request.session['request_token']['oauth_token']) |
|
86 |
params = { |
|
87 |
'oauth_token': request.session['request_token']['oauth_token'], |
|
88 |
} |
|
89 |
if force_login: |
|
90 |
params['force_login'] = 1 |
|
91 |
|
|
92 |
url = "%s?%s" % (authenticate_url, urllib.urlencode(params)) |
|
86 | 93 |
|
87 | 94 |
return HttpResponseRedirect(url) |
88 | 95 |
|
... | ... | |
95 | 102 |
extra_context={} |
96 | 103 |
): |
97 | 104 |
|
105 |
if request.GET.get('denied'): |
|
106 |
return HttpResponseRedirect(reverse('edit_profile')) |
|
107 |
|
|
98 | 108 |
if not 'request_token' in request.session: |
99 | 109 |
messages.error(request, 'Twitter handshake failed') |
100 | 110 |
return HttpResponseRedirect(reverse('edit_profile')) |
... | ... | |
107 | 117 |
resp, content = client.request(access_token_url, "GET") |
108 | 118 |
if resp['status'] != '200': |
109 | 119 |
try: |
110 |
del request.session['request_token'] |
|
120 |
del request.session['request_token']
|
|
111 | 121 |
except: |
112 |
pass |
|
122 |
pass
|
|
113 | 123 |
messages.error(request, 'Invalid Twitter response') |
114 | 124 |
return HttpResponseRedirect(reverse('edit_profile')) |
115 | 125 |
|
Also available in: Unified diff