2016-01-10 2 views
1

Я не могу успешно выполнить пример с http://flask-dance.readthedocs.org/en/latest/quickstarts/dropbox.html на платформе с открывающейся платформой.Пример быстрого запуска фляжки dropbox с открывающейся клавишей

from flask import Flask, redirect, url_for 
from flask_dance.contrib.dropbox import make_dropbox_blueprint, dropbox 

app = Flask(__name__) 
app.secret_key = "supersekrit" 
blueprint = make_dropbox_blueprint(
    app_key="my-key-here", 
    app_secret="my-secret-here", 
) 
app.register_blueprint(blueprint, url_prefix="/login") 

@app.route("/") 
def index(): 
    if not dropbox.authorized: 
     return redirect(url_for("dropbox.login")) 
    resp = dropbox.get("account/info") 
    assert resp.ok 
    return "You are {email} on Dropbox".format(email=resp.json()["email"]) 

if __name__ == "__main__": 
    app.run() 

Я получаю либо транспортную ошибку (OpenShift пытается использовать HTTP URI вместо HTTPS), или если я пытаюсь установить

os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'

(который я знаю, не рекомендуются для безопасности) затем я получаю

InvalidClientIdError: (invalid_request) Can't use "Authorization" header and "client_secret" arg together.

как локально, так и на платформе с открывающейся платформой.

Любое предложение о том, что нужно подстроить в приведенном выше примере?

ответ

1

I'm getting either a transport error (openshift tries to use HTTP uri instead of HTTPS)

Попробуйте получить доступ к индексу на https://yourApp-namespace.rhcloud.com (не HTTP) и убедитесь, что он настроен для вашего Dropbox приложения в качестве одного из переадресации URI.

Если это не сработает, вы можете взглянуть на this. Однако код учебника работает для меня с the flask quick-start, который предлагается на OpenShift. Только ссылка на приложение должна быть указана в flaskapp.py (то есть app.config.from_pyfile('flaskapp.cfg')), кроме кода, который вы связали и опубликовали выше.

+0

Ссылка на ProxyFix была очень полезна, поскольку openshift запускает простой HTTP за маршрутизатором TLS .. с app.wsgi_app = ProxyFix (app.wsgi_app) Я получил код клятвы Dropbox для работы на основе их [руководства] (https: // www .dropbox.com/разработчиков-v1/хранилищу/учебник/питон). – k3it

1

Вы знакомы о том, как вы можете установить основное приложение фляжки в openshift. Вот ссылка на официальные документы с открывающейся смены https://developers.openshift.com/en/python-flask.html и здесь https://github.com/openshift-quickstart/flask-base. После того, как вы запустили приложение для открытия флеш-фрейма, вы можете его улучшить, добавив дополнительный модуль Dropbox через virtualenv. Когда вы успешно развернуть приложение из OpenShift примера, и она работает, а затем расширить его с дополнительным Колба-Dance, поставив зависимость в setup.py:

from setuptools import setup 

setup(name='FlaskApp', 
    version='1.0', 
    description='A basic Flask app with static files', 
    author='Ryan Jarvinen', 
    author_email='[email protected]', 
    url='http://www.python.org/sigs/distutils-sig/', 
install_requires=['Flask>=0.10.1','Flask-Dance'], 
) 

, а затем использовать его в качестве flaskapp.py это было сделано на примере из вашего справочника Dropbox http://flask-dance.readthedocs.org/en/latest/quickstarts/dropbox.html.

+0

Я могу развернуть флешку для открытия и даже исключить вызовы API Dropbox, вручную разрешив доступ (на https://www.dropbox.com/developers-v1/core/start/python). Но у меня есть проблемы с выполнением «танец» oauth, как в примере с флажком. Можете ли вы запустить код, который я разместил без ошибок? – k3it

Смежные вопросы