2012-04-15 12 views
2

私は同様の質問などからいくつかの提案を試みました。それは私の状況を助けませんでした。投稿するFacebookのプロフィールWall + Facebook.py + Python + App Engine

私はFacebook.pyを使用しています。Google App EngineのApacheライセンスで、Pythonソリューションでライセンスされています。

私は有効なアクセストークンで作成されたGraphAPIオブジェクトを使用しました。そして、それは、App Engineのログに示された:

Graph >>> facebook.GraphAPI object at 0x64cc19e10b2ceb90 

をので、GraphAPIオブジェクトが作成された、

graph.put_object('Valid Facebook User ID', "feed", 
message="Hello world", link="http://example.com") 

これは以下のようなエラーログを投げている:最初は

HTTP Error 400: Bad Request: 
Traceback (most recent call last): 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__ 
    handler.get(*groups) 
    File "/base/data/home/apps/s~/development.358229427391780612/handler/profile_handlers.py", line 401, in get 
    graph.put_object(self.user.user_id, "feed", message="Hello world", link="http://example.com") 
    File "/base/data/home/apps/s~/development.358229427391780612/facebook.py", line 129, in put_object 
    return self.request(parent_object + "/" + connection_name, post_args=data) 
    File "/base/data/home/apps/s~/development.358229427391780612/facebook.py", line 181, in request 
    file = urllib2.urlopen(graphUrl, post_data) 
    File "/base/python_runtime/python_dist/lib/python2.5/urllib2.py", line 124, in urlopen 
    return _opener.open(url, data) 
    File "/base/python_runtime/python_dist/lib/python2.5/urllib2.py", line 387, in open 
    response = meth(req, response) 
    File "/base/python_runtime/python_dist/lib/python2.5/urllib2.py", line 498, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/base/python_runtime/python_dist/lib/python2.5/urllib2.py", line 425, in error 
    return self._call_chain(*args) 
    File "/base/python_runtime/python_dist/lib/python2.5/urllib2.py", line 360, in _call_chain 
    result = func(*args) 
    File "/base/python_runtime/python_dist/lib/python2.5/urllib2.py", line 506, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
HTTPError: HTTP Error 400: Bad Request 

、私は入れていました添付ファイル(リンク、説明など)として多くの追加データ。ただし、添付ファイルの要素を減らした後も、同じエラーが発生します。また、私はput_wall_postのメソッドを使用していました。代わりにput_objectを使うことを提案している人もいます。

フォーラムで多くの検索を試みましたが、提案のいくつかの問題を解決できませんでした。

主な問題は何ですか?

+0

他のGraph APIアクションを実行できますか?フィードの投稿だけが壊れていますか? – snkashis

+0

うん。私はHTTP GET graph.get_object( "私")を試して、私にデータを返します。他のPOSTメソッドのアクションを意味しましたか? – MrCooL

+0

はい、あらゆる種類の書き込みです。 – snkashis

答えて

1

私は自分で投稿した問題を解決しました。これを解決しようとしている人に、同じエラーが発生する可能性がある場合は、解決策を教えてください。

以前のように私たちがユーザーから求めた許可は、基本的なアクセス情報に対してのみ許可されていたことを知らず、また認識していません。原因facebook.pyの元の溶液に

:それは本当の例外を反映するため、トリプル難しく、デバッグすることはありませんようにカスタム例外を上げる

if response.get("error"): 
      raise GraphAPIError(response["error"]["type"], 
           response["error"]["message"]) 

は常に悪いです。これにより

if response.get("error"): 
    raise 

:私は例外を変更し、ことに疑い、したがって

など、多くの場合、不正なURLのフォームに関連
HTTP Error 400: Bad Request 

:提供元カスタム例外は、次の例外が発生しましたキャッチする実際の例外が発生します。

HTTP Error 403: Forbidden 

実際の例外、私はすぐに、認可の問題やFacebookのユーザーのアクセス許可を疑った。だから、これを解決するには:

FB.login(function(response) { 
    // handle the response 
}, {scope: 'publish_actions'}); 

ここでは、HTTPエラー403を発生させる例外のために問題を解決する必要があります:禁止されています。 Cheeeerssss!

関連する問題