0

GoogleAppEngineでホストされているFacebookアプリケーションのキャンバスURLを表示するのに問題があります。Pythonを使用しています。

グーグルアプリエンジン(www.my-app.appspot.com)ではすべてがうまく機能しますが、フェイスブックで自分のアプリを見ようとすると、キャンバスは完全に空白になります。

URLキャンバス: http: //my-app.appspot.com/ 安全なURLキャンバス:https ://my-app.appspot.com/

構成に問題がありますか?

ありがとう

4

1 に答える 1

1

構成は正しいです。

https://github.com/pythonforfacebook/facebook-sdkを使用している場合

サンプルコードにいくつかの変更を加える必要があります。

example.pyファイルは、HomeHandlerクラスの下の「get」メソッドと「post」メソッドを定義します。

「get」は、ページがFacebook.com内でCanvasアプリとして実行されている場合は機能しませんが、ページがブラウザーによって直接呼び出された場合は機能します。

Facebookは、 https ://developers.facebook.com/docs/howtos/login/signed-request/で詳しく説明されているように、 signed_request引数 を含むPOSTリクエストを使用してCanvasアプリをiframeにロードします。

example.pyファイルを修正するための最初のステップは次のとおりです。

これにより、少なくともFacebook内にコードが表示されます。

  1. 元の「投稿」方法をコメントアウトします。

    #def post(self):
    #url = self.request.get('url')
    #file = urllib2.urlopen(url)
    #graph = facebook.GraphAPI(self.current_user['access_token'])
    #response = graph.put_photo(file, "Test Image")
    #photo_url = ("http://www.facebook.com/"
                  #"photo.php?fbid={0}".format(response['id']))
    #self.redirect(str(photo_url))
    
  2. 「get」メソッドを「post」メソッドとして複製します。getとpostの両方が次のようになります。

    def post(self):
    template = jinja_environment.get_template('example.html')
    self.response.out.write(template.render(dict(
        facebook_app_id=FACEBOOK_APP_ID,
        current_user=self.current_user
    )))
    

それが完了したら、Facebook内でテストできます。「example.html」はiframeに表示されますが、デフォルトでは、「example.html」はアップロードする画像のURLを要求します。元の「post」メソッドがコメント化されているため、これは機能しなくなります。

機能を修正するには、リクエストを処理するためにdef post(self):メソッドにif/thenステートメントを作成する必要があります。たとえば、「url」引数をチェックして元の「post」メソッドを再統合したい場合があります-self.request.get('url')を使用して-そこにある場合は、画像を受信して​​いることがわかりますURLであり、元の「投稿」コードに分岐する必要があります

于 2013-01-17T01:36:41.343 に答える