Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @user_blueprint.route('/callback/<provider>', methods=['GET','POST'])
- def oauth_callback(provider):
- form = TwitterForm(request.form)
- if not current_user.is_anonymous:
- return redirect(url_for('main.home'))
- oauth = OAuthSignIn.get_provider(provider)
- social_id, username, email = oauth.callback()
- if social_id is None:
- flash('Authentication failed!')
- return redirect(url_for('main.home'))
- user = User.query.filter_by(social_id=social_id).first()
- if not user and form.validate_on_submit():
- user = User(
- email=form.email.data,
- password=form.password.data,
- confirmed=False,
- social_id=social_id,
- nickname=username)
- db.session.add(user)
- db.session.commit()
- token = generate_confirmation_token(user.email)
- confirm_url = url_for('user.confirm_email', token=token, _external=True)
- html = render_template('user/activate.html', confirm_url=confirm_url)
- subject = "Please confirm your email"
- send_email(user.email, subject, html)
- login_user(user,True)
- flash('A confirmation email has been sent via email.', 'success')
- return redirect(url_for("user.unconfirmed"))
- return render_template('user/twitterregister.html', form=form)
- class TwitterSignIn(OAuthSignIn):
- def __init__(self):
- super(TwitterSignIn, self).__init__('twitter')
- self.service = OAuth1Service(
- name='twitter',
- consumer_key='pNU7LEHOLEAJH3lQRNwOjiJMH',
- consumer_secret='WFe5DVdi5JZ6KtuyRWYP9BkC8905EUp0N56junLtde1vL5w2NR',
- request_token_url='https://api.twitter.com/oauth/request_token',
- authorize_url='https://api.twitter.com/oauth/authorize',
- access_token_url='https://api.twitter.com/oauth/access_token',
- base_url='https://api.twitter.com/1.1/'
- )
- def authorize(self):
- request_token = self.service.get_request_token(
- params={'oauth_callback': self.get_callback_url()}
- )
- session['request_token'] = request_token
- return redirect(self.service.get_authorize_url(request_token[0]))
- def callback(self):
- ***request_token = session.pop('request_token')***
- if 'oauth_verifier' not in request.args:
- return None, None, None
- oauth_session = self.service.get_auth_session(
- request_token[0],
- request_token[1],
- data={'oauth_verifier': request.args['oauth_verifier']}
- )
- me = oauth_session.get('account/verify_credentials.json').json()
- social_id = 'twitter$' + str(me.get('id'))
- username = me.get('screen_name')
- return social_id, username, None # Twitter does not provide email
- Traceback (most recent call last):
- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
- return self.wsgi_app(environ, start_response)
- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
- response = self.make_response(self.handle_exception(e))
- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
- reraise(exc_type, exc_value, tb)
- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
- response = self.full_dispatch_request()
- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
- rv = self.handle_user_exception(e)
- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
- reraise(exc_type, exc_value, tb)
- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
- rv = self.dispatch_request()
- File "/usr/local/lib/python2.7/site-packages/flask_debugtoolbar/__init__.py", line 125, in dispatch_request
- return view_func(**req.view_args)
- File "/Users/Ben/Desktop/flask_practise/project/user/views.py", line 89, in oauth_callback
- social_id, username, email = oauth.callback()
- File "/Users/Ben/Desktop/flask_practise/oauth.py", line 92, in callback
- request_token = session.pop('request_token')
- File "/usr/local/lib/python2.7/site-packages/werkzeug/datastructures.py", line 246, in pop
- rv = super(UpdateDictMixin, self).pop(key)
- KeyError: 'request_token'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement