4

facepy と fandjango で Facebook 通知を作成しようとしていますが、常に同じエラーが発生します。

@facebook_authorization_required
@csrf_exempt     
def notify_self(request):

     token = request.facebook.user.oauth_token.token #user token
     token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
     graph = GraphAPI(token)
     graph.post(
        path = 'me/notifications',
        template = '#Text of the notification',
        href = 'URL',
        access_token= token_app
     )

     return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\';</script>')<code>

https://developers.facebook.com/tools/debug/でアプリの access_token を確認すると、有効なトークンであると表示されました (APP の ID が返されます)。

私も試してみます

グラフ = GraphAPI(token_app)

しかし、それは私を送ります:

[2500] 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。

私のアプリには必要なすべての権限があります。しばらく検索しましたが、助けが見つからなかったので、ここで質問しています。

編集:正しいコードは

@facebook_authorization_required
@csrf_exempt     
def notify_self(request):
   token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
   graph = GraphAPI(token_app)
   graph.post(
      path = 'me/notifications',
      template = '#Text of the notification',
      href = 'URL'
   ) 

   return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\'</script>')

joaopsfのおかげで

4

3 に答える 3

1

最後に、どこに問題があるかを見つけました。私が試していたとき

グラフ = GraphAPI(token_app)

私は良い方法でした、唯一のことは削除することでした

access_token=token_app

トークンは、GraphAPI(token_app) の指示時に保存されるため、再度与える必要はありません。

正しいコードは次のとおりです。

@facebook_authorization_required
@csrf_exempt     
def notify_self(request):

   token = request.facebook.user.oauth_token.token #user token
   token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
   graph = GraphAPI(token)
   graph.post(
      path = 'me/notifications',
      template = '#Text of the notification',
      href = 'URL',
      access_token= token_app
   ) 

   return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\'</script>')

それが誰かを助けることを願っています

于 2012-11-09T14:35:25.697 に答える
0

通知を作成するときは、ユーザートークンではなく、アプリトークンを使用する必要があります。したがって、token=...行は必要ありません。

さらに、ユーザートークンではなくアプリトークンを使用しているため、パスで「 me/... 」を使用することはできません。ユーザーIDを指定する必要があります。

これは私のために働いたものです:

@facebook_authorization_required
@csrf_exempt
def notify_self(request):
    token_app = facepy.utils.get_application_access_token(
        settings.FACEBOOK_APPLICATION_ID,
        settings.FACEBOOK_APPLICATION_SECRET_KEY
    )
    graph = GraphAPI(token_app)
    graph.post(
        path='%s/notifications' % request.facebook.user.facebook_id,
        template='#Text of the notification',
        href='my targe URL',
    )
    return 'etc'
于 2013-01-17T02:42:03.430 に答える
0

Jiloko コードを更新するのを忘れていました。コードを試してみましたが、正しいコードは次のとおりです。

@facebook_authorization_required
@csrf_exempt     
def notify_self(request):
   token_app=facepy.utils.get_application_access_token('APP_ID','APP_SECRET_ID') 
   graph = GraphAPI(token_app)
   graph.post(
      path = 'me/notifications',
      template = '#Text of the notification',
      href = 'URL'
   ) 

   return HttpResponse('<script type=\'text/javascript\'>top.location.href = \'URL\'</script>')

「USER_ID/notifications」の「me/notifications」を変更できます

于 2013-03-01T00:20:58.047 に答える