2016-09-27 9 views
1

私が達成しようとしていることはかなりシンプルです。Flaskを使用してParseServerに接続する際の認証エラー

API呼び出し(具体的にはParseServer)を使用してリモートサーバーに接続するWebアプリケーションを作成するには、Flaskを使用します。 これを達成するためにサードパーティのライブラリを使用しています。スタンドアロンスクリプトでコードを実行しているときは、すべてが完全に機能します。しかし、Flaskにコードを追加すると、突然サーバーで認証できなくなる。

また、API呼び出しを実行するときに「不正な」エラーが発生する。

Flaskでは、APiライブラリで使用されている登録方法が記憶されていないようです。

フラスケの別の場所に登録と初期化コードを置いたことを多く試してみましたが、何も働いていませんでした。

Githubの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を実行すると、メインの部分と同じコードで、すべてが完全に機能します。

Google App Engineからdev_appserver.pyでFlaskアプリを実行します。

マイフォルダ構造

/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のコードで違っていたその部分またはその一部。 ライブラリをgithubから直接更新した後は、新しいプロジェクトで作業していましたが、古いプロジェクトでは動作しませんでした。 古いプロジェクトでは、登録を含むParseCommunicationクラスをインポートする前に、ライブラリからUsersクラスも使用するModelClassをインポートしています。 これを切り替えると動作します。 あなたの助けと努力ありがとう@GAEEfan –

+0

私は非常に似たようなことをしようとしています。私は同じトレースを取得していますが、この問題はrest_keyと思われます。私が見つけることができたのは、オープンソースの解析サーバがREST_API_KEYを使用しないことです。あなたは回避策を見つけましたか? – LancDec