Facebook页面访问令牌

124

我有一个Facebook页面,想从中获取一些内容。首先是feeds,根据我所读的,它们是公开的(无需access_token)。但我也想获得事件...它们不是公开的,需要access_token。

我不希望用户登录Facebook或任何类似的操作。我只想从这个页面上推送所有能够获得的数据。因此,我已经放弃了在这里找到的许多示例以及在https://developers.facebook.com/blog/post/500/ 上找到的那个,因为它们要求用户登录或需要一些我不感兴趣的用户操作。

我想要的是,我的Facebook应用程序具有完全授权和access_token,以便从我拥有的(管理员)这个Facebook页面中推送数据。这可能吗?我已经尝试了很多方法,但似乎都不起作用。

我试着点击这个链接:https://www.facebook.com/dialog/oauth?client_id=150635421702954&redirect_uri=http://MY_URL/&scope=manage_pages&response_type=token&fields=access_token - 把MY_URL替换成我的网站,并请求授权以编辑我拥有的每个页面。即使不是我想要的,我也点击了它,但没有返回access_token...


现在我这样获取事件(访问令牌经常过期):1-从Graph Explorer获取令牌2-将其粘贴到我的代码中:var authToken ='THE_CODE_I_GOT';``var feedQuery ='graph.facebook.com/MY_PAGE_ID/feed';``var feedURL =feedQuery +'?access_token='+ authToken +'&callback=?';``$.getJSON(feedURL,function(data){``var d = data.data; for( i=0; i < d.length; i++) { d[i].message ? $("#list").append('<li>'+ d[i].message +'</li>') : ''; // lots of other stuff, you got it } }); - Rafael 'BSIDES' Pereira
1
你可以获得一个永久的令牌: https://dev59.com/1WQm5IYBdhLWcg3w-S6Y#17234650 - Josh
4个回答

273
  1. 进入Graph API Explorer
  2. 从下拉菜单中选择你的应用程序
  3. 点击“获取访问令牌”
  4. 选择manage_pages权限(你可能还需要user_events权限,但不确定)
  5. 现在访问me/accounts连接并复制你页面的access_token
  6. 点击你的页面ID
  7. 将页面的access_token添加到GET字段中
  8. 调用你想要的连接(例如:PAGE_ID/events

2
通过这样做,我可以使用其中一个页面的页面令牌调用所有页面上的连接。这样做是否不正确?有没有一种方法可以获取仅适用于特定页面而不适用于其他页面的令牌? - andresp
118
我曾攀登高山,穿越海洋,只为寻找这个答案。谢谢。 - IMB
16
当你因为任何原因注销登录后,生成的访问令牌将过期,因此这个流程不再起作用。 - coneybeare
1
@Tony,这应该适用于公共帖子,在cocacola/feed上尝试一下。从下拉菜单中选择您的应用程序,然后“获取应用程序令牌”并进行测试。 - ifaour
1
这个不再起作用了,似乎现在没有办法通过API发布到自己的页面。 - albanx
显示剩余15条评论

16

6
这不能帮助获取限制页面的活动。 - Sinan
2
那还真的是这样吗?! - jeromej

5
这个文档虽然有点难找,但是很好。 Facebook Graph API - 页面 Token 在初始化 Node 的 fbgraph 后,您可以运行:
var facebookAccountID = yourAccountIdHere 

graph
.setOptions(options)
.get(facebookAccountId + "/accounts", function(err, res) {
  console.log(res); 
});

并收到一个JSON响应,其中包含您要获取的令牌,位于:

res.data[0].access_token

0

我发现 Graph API Explorer 是生成和测试令牌的最佳方法。如果您想以编程方式创建这些令牌,还可以获取请求代码。

根据访问令牌指南-页面访问令牌,要获取页面访问令牌,我们需要访问此端点-

curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token} 

因此,要获取页面访问令牌,我们需要首先获取用户访问令牌用户ID

  • 要获取用户访问令牌,您可以按照这个Graph API - 开始的逐步指南进行操作。基本上,我们需要访问以下端点以获取用户访问令牌。您可以从https://developers.facebook.com/apps/获取App IDApp Secret。 选择您的应用程序,然后单击仪表板左侧边栏上的设置下拉列表,再单击基本信息。

cURL请求:-

curl -X GET "https://graph.facebook.com/oauth/access_token?client_id={your-app-id}&client_secret={your-app-secret}&grant_type=client_credentials"

enter image description here

图形 API 浏览器: 输入图像描述

我正在创建具有(权限)范围的令牌:pages_show_listpages_read_engagementpages_manage_metadatapages_read_user_contentpages_manage_adspages_manage_postspages_manage_engagementpublic_profile,您可以根据需要添加/删除。

GET https://developers.facebook.com/v5.0/me?fields=id,name

enter image description here enter image description here

现在我们可以像下面这样获取页面访问令牌:- 这将返回您拥有角色的页面列表以及有关每个页面的信息,例如页面类别、您在每个页面上具有的特定权限和页面访问令牌。

cURL请求:-

curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token}

响应:

{
  "data": [
    {
      "access_token": "EAACEdE...",//This is Page Access Token
      "category": "Brand",
      "category_list": [
        {
          "id": "1605186416478696",
          "name": "Brand"
        }
      ],
      "name": "Ash Cat Page",//This is page-name
      "id": "1353269864728879",//This is page-id
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
    {
      "access_token": "EAACEdE...",
      "category": "Pet Groomer",
      "category_list": [
        {
          "id": "163003840417682",
          "name": "Pet Groomer"
        },
        {
          "id": "2632",
          "name": "Pet"
        }
      ],
      "name": "Unofficial: Tigger the Cat",
      "id": "1755847768034402",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    }
  ]
}

图形 API 浏览器: ![enter image description here

要获取其他令牌,如用户访问令牌、长期令牌等,您可以采用相同的方法。

希望这有所帮助,如果您认为我应该添加更多细节,请告诉我。


您也可以直接查询“/me/accounts”端点,以获取应用程序用户允许您的应用程序访问的页面的ID和页面访问令牌,而无需首先获取用户ID,然后获取页面访问令牌。 - Arpit Jain
GET /me/accounts 端点翻译为 GET /{user-id}/accounts - Arpit Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接