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/通知”更改“我/通知”

于 2013-03-01T00:20:58.047 回答