Я разрабатываю веб-приложение Python и использую флеш-фрейм для связи с API Shapeways.com. Я использую module provided by Shapeways для подключения. Я в состоянии проверить подлинность (АНИ использует OAuth v1), используя следующие шаги из the module's docs:Как я могу подключиться к API Shapeways.com более одного раза?
- Создать клиент
- Подключения к API и получить запрос маркеров и проверку подлинности URL
- Послать пользователь для проверки подлинности URL
- Проверка обратного вызова из URL аутентификации
можно затем загрузить 3D модели и чтения данных из существующих моделей в учетной записи пользователя.
Однако, если я обновляю страницу после подключения, я больше не могу получить URL-адрес из метода connect()
модуля. Я должен перезапустить скрипт (или перезапустить Apache при использовании mod_wsgi), прежде чем я смогу получить новый URL. Вот урезанный пример:
from flask import Flask, request, redirect
from urllib.parse import urlencode
import urllib.parse
from shapeways.client import Client
consumer_key = [my app's key]
consumer_secret = [my app's secret]
callback_url = "http://127.0.0.1:5000/callback"
client = Client(consumer_key, consumer_secret, callback_url)
app = Flask(__name__)
app.debug = True
app.secret_key = "FZ\x96\xf0\x94\xa0:\xe2\x9a&\x88\xc3\x1c\xdf\xfc\x83`gw.\xab\x83\xf1d"
@app.route("/")
def root():
url = client.connect()
return redirect(url, code=302)
@app.route("/callback")
def callback():
oauth_token = request.args.get("oauth_token", 0, type=str)
oauth_verifier = request.args.get("oauth_verifier", 0, type=str)
client.verify(oauth_token, oauth_verifier)
info = client.get_api_info()
return str(info)
if __name__ == "__main__":
app.run(debug=True)
Первый раз, когда я загрузить страницу, connect()
получает запрос маркер и URL из API и перенаправляет меня Shapeways.com, где я войти в систему и дать разрешение. Затем эта страница перенаправляется на URL-адрес обратного вызова, где выполняется верификация.
Если я перезагружаю страницу, client.connect()
возвращает None
. То же самое происходит, если я пытаюсь получить доступ к странице из другого браузера.
Я использую API (или флягу) неправильно? Что я должен изменить, чтобы приложение не позволяло одному пользователю войти в систему? Что еще я мог бы попробовать отладить эту проблему?
Ahhh ... звучит многообещающе. Благодарю. Я попробую, чтобы этот вечер и отметили, если он делает трюк. – user2950747