1

Open Graph アクションを投稿すると、urlopen が 500 コードと Facebook からの「{"error_code":1,"error_msg":"不明なエラーが発生しました"}」エラーで失敗します。他の投稿で動作するコードを取得できます (たとえば、グラフ API を使用してステータスに関するコメントを投稿しても問題ありません)。curl を使用して、このアクション ポストを機能させることもできます。したがって、値の 1 つとして URL を使用してフォームデータを投稿する場合、これは urllib2.urlopen の問題のようです。

curl で動作するグラフ API の投稿:

curl -F 'access_token=nnnnnn' -F 'object=https://abc.com/123' \
'https://graph.facebook.com/me/namespace:action' -k


エラーを与える urllib2 を介して同じグラフ api ポスト:

from urllib2 import urlopen, Request, URLError

request = Request (url='http://graph.facebook.com/me/namespace:action';, 
                   data = urllib.urlencode(
                            {'object':'https://abc.com/123',
                             'access_token':'nnnnnnnn'
                            }, 
                   headers = {'Content-Type': 'application/x-www-form-urlencoded'}
          ) 
response = urlopen (request)

私は何が間違っている可能性がありますか? (私はurllib2.urlopenを初めて使用します。ところで、もともとurlfetch pythonモジュールを介してurlfetch.fetchを試しましたが、どちらも機能しませんでした)。私はこれをgooleアプリエンジンで使用しています。

4

1 に答える 1

1

かなりの量の掘り下げ/試行錯誤の後、最終的にこれを解決することができました。

これは urllib urlopen の問題ではありませんが、Google App Engine の微妙な違いであり、開いているグラフ URL でアクション ポストが呼び出されると、Facebook がオブジェクト URL で「get」を (同期的に) トリガーします。

したがって、基本的には、アクティブなインスタンスが FB グラフ URL を呼び出している間に、アプリ エンジン アプリで get が呼び出されます。現在、未払いのインスタンスを使用していますが、FB が OG の投稿に失敗するなどの予期しない動作が発生しています (アクティブな投稿中に、ログの取得が正常に行われていることがわかります。FB が失敗する原因がわかりません。洞察、共有してください)。

urlopen/OG-action-post を 'taskqueue'ing することでこれを回避しました - そして、これが 2 回目に呼び出されると (FB は明らかに最初にオブジェクトをキャッシュします)、成功します。

誰かが詳細を必要とする場合は、連絡を取ってください.

于 2012-05-27T18:51:33.007 に答える