В моем приложении у меня есть кнопка входа, которая вызывает /oauth2authorize
, и это работает хорошо. В методе authorize_callback
, который я зарегистрировал на стороне сервера, я получаю учетные данные в параметрах и могу без проблем вызвать конечную точку API Google.
oauth2 = UserOAuth2()
def create_app(debug=False, testing=False, config_overrides=None):
app = Flask(__name__, template_folder='templates')
app.config.update(
SECRET_KEY=b"XXX",
GOOGLE_OAUTH2_CLIENT_ID='XXXX',
GOOGLE_OAUTH2_CLIENT_SECRET='XXXX'
)
oauth2.init_app(
app,
scopes=[MY_SCOPES],
authorize_callback=request_user_info)
def request_user_info(credentials):
http = httplib2.Http()
credentials.authorize(http)
resp, content = http.request(u'https://www.googleapis.com/userinfo/v2/me')
Проблема в том, что когда я хочу получить эти учетные данные позже по другому маршруту, чтобы сделать другие вызовы API Google.
Я пробовал без декоратора @oauth2.required
, а затем oauth2.credentials
- это None
, oauth2.email
и oauth2.user_id
.
Я попытался с помощью @oauth2.required
decorator, и когда я пытаюсь вызвать мой маршрут, процесс аутентификации начинается снова (и не удается, я не уверен, почему, возможно, неверная конфигурация URL).
По сути, я хотел бы получить объект учетных данных (точно так же, как тот, который был передан в моем authorize_callback
), чтобы я мог делать свои запросы API.
Видишь, что я делаю не так?
К вашему сведению: это колба-утилита lib, которую я использую (часть oauth2client)
Спасибо