Как получать имя пользователя с Google OAuth в python?

Я отношусь loguear к моим пользователям с услугой удостоверения google. Я хочу сохранять в моей базе данных имя и электронную почту вышеупомянутых пользователей и, следовательно, должен получать это пока - logueando. Но я не могу:

google = oauth.remote_app(
    'google',
    consumer_key='unacontraseña',
    consumer_secret='otracontraseña'
    request_token_params={
        'scope': 'email'
    },
    base_url='https://www.googleapis.com/oauth2/v1/',
    request_token_url=None,
    access_token_method='POST',
    access_token_url='https://accounts.google.com/o/oauth2/token',
    authorize_url='https://accounts.google.com/o/oauth2/auth',
)

@app.route('/login', methods=['GET', 'POST'])
def login():
      return render_template('login.html')

Где login.html у него есть кнопка, которая, если он нажат, пересылает меня в следующую функцию:

 @app.route('/login/authorized_google')
 def authorized_google():
    resp = google.authorized_response()
    if resp is None:
        return 'Access denied'
    else:
        session['google_token'] = (resp['access_token'], '')
        me = google.get('user')
    try:
        user = User.select().where(User.social_id == str(me.data['login'])).get()
    except:
        user = User.create(email = str(me.data['email']), 
                           nickname = str(me.data['name']),
                           social_id  = str(me.data['login']))
    global current_user
    current_user = user
    return redirect(url_for('index'))

Ошибка, которую он возвращает: index is str and may be int. Это говорит мне, что например:

   me.data['email']

Плохо, но тогда не, как получать электронную почту и оставшуюся часть полей me.

1
задан 21.03.2017, 09:41
1 ответ

Я нашел решение, ошибка находится в линии:

me = google.get('user')

правильное:

me = google.get('infouser')
2
ответ дан 24.11.2019, 14:18