2016-09-27 3 views
1

То, что я пытаюсь достичь, довольно просто.Ошибка аутентификации при использовании Flask для подключения к ParseServer

Я хочу использовать Flask для создания веб-приложения, которое подключается к удаленному серверу через вызовы API (в частности, ParseServer). Я использую стороннюю библиотеку для достижения этой цели, и все работает отлично, когда я запускаю свой код в автономном скрипте. Но когда я добавляю свой код в Flask, я внезапно не могу пройти аутентификацию с сервера

А точнее, я получаю «несанкционированную» ошибку при выполнении вызова API.

Мне кажется, что в Flask метод регистрации, используемый библиотекой APi, не запоминается.

Я пробовал много вещей, связанных с регистрацией и кодом инициализации в разных местах в Flask, ничего не работало.

Я задал аналогичный вопрос в Гитубе Library без помощи.

Так что я думаю, у меня есть два вопросы, которые могли бы помочь мне решить эту проблему

1) Где я должен поставить метод регистрации и импорт файлов из этой библиотеки? &

2) Что я могу сделать, чтобы определить проблему конкретно, например. точно знать, что не так?

Вот код

Код Колба здесь

@app.route('/parseinsert') 
def run_parse_db_insert(): 
    """The method for testing implementation and design of the Parse Db 
    """ 
    pc = ParseCommunication() 
    print(pc.get_all_names_rating_table()) 
    return 'done' 

ParseCommunication мой класс, который имеет дело с разбора. Если я запустил ParseCommunication из этого сценария, с тем же кодом, что и выше, в разделе main, все работает отлично.

Я запускаю приложение Flask с dev_appserver.py из Google App Engine.

Моя структура папок

/parseTest 
    /aplication 
    views.py 
    app.yaml 
    run.py 

Мой run.py код

import os 
import sys 
sys.path.insert(1, os.path.join(os.path.abspath('.'), 'lib')) 
sys.path.insert(1, os.path.join(os.path.abspath('.'), 'application')) 
import aplication 

Позвольте мне знать, что еще я мог бы обеспечить, чтобы помочь.

Спасибо заранее

EDIT:

Стек трассировки по запросу. Это в основном связанно с библиотекой (от того, что я могу сказать?)

ERROR 2016-09-28 06:45:50,271 app.py:1587] Exception on /parseinsert [GET] 
Traceback (most recent call last): 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/flask/app.py", line 1988, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/flask/app.py", line 1641, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/flask/app.py", line 1544, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/flask/app.py", line 1639, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/flask/app.py", line 1625, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/theshade/Devel/ParseBabynames/parseTest/aplication/views.py", line 34, in run_parse_db_insert 
    name = pc.get_user('testuser1') 
    File "/home/theshade/Devel/ParseBabynames/parseTest/aplication/parseCommunication.py", line 260, in get_user 
    return User.Query.get(username=uname) 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/parse_rest/query.py", line 58, in get 
    return self.filter(**kw).get() 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/parse_rest/query.py", line 150, in get 
    results = self._fetch() 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/parse_rest/query.py", line 117, in _fetch 
    return self._manager._fetch(**options) 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/parse_rest/query.py", line 41, in _fetch 
    return [klass(**it) for it in klass.GET(uri, **kw).get('results')] 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/parse_rest/connection.py", line 108, in GET 
    return cls.execute(uri, 'GET', **kw) 
    File "/home/theshade/Devel/ParseBabynames/parseTest/lib/parse_rest/connection.py", line 102, in execute 
    raise exc(e.read()) 
ResourceRequestLoginRequired: {"error":"unauthorized"} 
+0

Можете ли вы предоставить stacktrace ошибки? Можете ли вы добавить журнал для каждой функции, чтобы узнать, как далеко она доходит? У вас есть взаимозаменяемое правописание: «приложение» и «приложение». Проверь это. – GAEfan

+0

@GAEfan Благодарим за отзыв. Я отредактировал трассировку стека в вопросе. Из того, что я могу сказать, это в основном связано с библиотекой Python SDK/API, которую я использую. Но, может быть, вы можете прочитать больше, а затем меня. Еще раз спасибо за вашу помощь –

+0

Опять же, вернемся к взаимозаменяемости «приложения» и «приложения» – GAEfan

ответ

1

Анализировать требуют ключей и ENV переменных.Проверьте эту строку:

API_ROOT = os.environ.get('PARSE_API_ROOT') or 'https://api.parse.com/1'

Ваша ошибка в строке 102 по адресу:

https://github.com/milesrichardson/ParsePy/blob/master/parse_rest/connection.py

Перед тем, как можно разобрать, вам необходимо зарегистрироваться:

from parse_rest.connection import register 

APPLICATION_ID = '...' 
REST_API_KEY = '...' 
MASTER_KEY = '...' 

register(APPLICATION_ID, REST_API_KEY, master_key=MASTER_KEY) 
+0

Итак, прежде чем вы ответили, я обнаружил, что строка, которую вы разместили, была различной в коде parselibrary в Flask, поскольку там было или присутствующая часть. Итак, после того, как я обновил библиотеку непосредственно из github, он работал над новым проектом, но не старым. Оказывается, что в старом проекте я импортирую ModelClass, который также использует класс Users из библиотеки, прежде чем импортировать класс ParseCommunication, который содержит регистрацию. Как только я переключаю это, он работает. Благодарим вас за помощь и помощь. @GAEEfan –

+0

Я пробую что-то очень похожее. Я получаю тот же след, но я подозреваю, что эта проблема - rest_key. То, что я смог найти, заключается в том, что доза сервера анализа с открытым исходным кодом не использует REST_API_KEY. Вы нашли работу вокруг? – LancDec

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