0

localhost の Google App Engine サーバーで実行されている次の Python コードを使用して、Facebook 通知を自分に送信することに成功しました。Facebook 通知のテンプレート機能を使用して、通知のテキストで Facebook ユーザー ID を太字の名前に展開します。

url = 'https://graph.facebook.com/'+myOwnID+'/notifications'

values = {'access_token' : 426547656256546|4fhe34FJdeV3WvfF6SNfehs7GfW
                  'href' : 'http://localhost:8080/', 
              'template' : '@['+myOwnID+'] says hi.'}

req = urllib2.Request(url, urllib.urlencode(values))
urllib2.urlopen(req)

アプリ アクセス トークンは作成されていますが、実際のトークンと同じ形式であることに注意してください。

テンプレートの ID を友人の ID に変更すると、次のようになります。

url = 'https://graph.facebook.com/'+myOwnID+'/notifications'

values = {'access_token' : 426547656256546|4fhe34FJdeV3WvfF6SNfehs7GfW
                  'href' : 'http://localhost:8080/', 
              'template' : '@['+myFriendID+'] says hi.'}

req = urllib2.Request(url, urllib.urlencode(values))
urllib2.urlopen(req)

エラーが発生します

HTTP Error 403: Forbidden

ID をテンプレートにハードコードしても同じように機能するため、変数値が正しくないという問題ではありません。

2 番目のケースが機能しないのはなぜですか? どうすれば修正できますか?

4

2 に答える 2

2

最後の行を次のように置き換えることで、urllib2 がステータス コードだけでなく、より詳細なエラー メッセージを出力できることに気づきませんでした。

try:
    urllib2.urlopen(req)
except urllib2.HTTPError, error:
    logging.info(error.read()) # or "print error.read()"

これにより、明確なエラーメッセージが表示されます。

{"error":{"message":"(#200) Cannot tag users who have not installed the app","type":"OAuthException","code":200}}

403 ステータス コードでの urllib2 の動作の詳細については、12、および3を参照してください。

于 2013-08-02T00:49:11.470 に答える
1

あなたのエラー メッセージによると、あなたが通知を送信するには、あなたの友人があなたのアプリをインストールする必要があるようです。それを修正するためにできることは何もありません。

于 2013-08-08T17:55:04.047 に答える