授权后如何正确重定向到facebook页面选项卡URL
我已经改变了我的facebook页面标签应用程序请求权限的方式 我在FB对话框中使用javascript方法,现在我使用重定向方法(在这种方法中,用户被重定向到FB页面,在该页面上请求权限,然后重定向回facebook页面选项卡) 这一变化的原因是,我相信这种方法将出现 比使用javascript对话框更少的bug和问题 当使用重定向方法时,我需要指定用户在提供权限后将被重定向的URL。我希望此url是安装了应用程序的facebook页面选项卡的url 在构建重定向的url时,我知道当前的页面id和我的应用程序id。有了这些信息,我需要构建facebook页面选项卡url,它应该如下所示: {#APP#u ID}?sk=APP#{#APP#u ID} 问题是,我不知道什么是页塞。我使用上面的url运行的测试(使用PAGE-SLUG)最终重定向到正确的url。然而,知道Facebook是一个非常不稳定的平台,我想知道有没有更好的方法来构建这个重定向url授权后如何正确重定向到facebook页面选项卡URL,facebook,facebook-graph-api,facebook-page,Facebook,Facebook Graph Api,Facebook Page,我已经改变了我的facebook页面标签应用程序请求权限的方式 我在FB对话框中使用javascript方法,现在我使用重定向方法(在这种方法中,用户被重定向到FB页面,在该页面上请求权限,然后重定向回facebook页面选项卡) 这一变化的原因是,我相信这种方法将出现 比使用javascript对话框更少的bug和问题 当使用重定向方法时,我需要指定用户在提供权限后将被重定向的URL。我希望此url是安装了应用程序的facebook页面选项卡的url 在构建重定向的url时,我知道当前的页面i
编辑:上述方法存在问题。当facebook用户默认不使用SSL时,重定向会丢失SSL协议并使用HTTP链接。实际上非常简单,您可以使用PHP调用Graph API,如下所示:
$facebook->api("/{PAGE_ID}");
// change {PAGE_ID} to the page id you are redirecting back to
返回值是一个json数组,其中包含“link”->这是您要查找的URL:-)
返回示例:
{
"id": "XXXXXXXXX",
"name": "My Demo Page",
"picture": "",
"link": "https://www.facebook.com/pages/My-Demo-Page/XXXXXXXXX",
"likes": 123456,
"category": "Product/service",
"can_post": true,
"type": "page"
}
如果您知道页面名称,也可以按页面名称进行查询,例如:
使用以下命令查询图形API:
$facebook->api("/coca-cola");
将导致:
{
"id": "40796308305",
"name": "Coca-Cola",
"picture": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/174560_40796308305_2093137831_s.jpg",
"link": "https://www.facebook.com/coca-cola",
"likes": 40680159,
"cover": {
"cover_id": "10150682306963306",
"source": "https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/s720x720/416803_10150682306963306_40796308305_9337341_812683101_n.jpg",
"offset_y": 0
},
"category": "Food/beverages",
"is_published": true,
"website": "http://www.coca-cola.com",
"username": "coca-cola",
"founded": "1886",
"description": "Created in 1886 in Atlanta, Georgia, by Dr. John S. Pemberton, Coca-Cola was first offered as a fountain beverage at Jacob's Pharmacy by mixing Coca-Cola syrup with carbonated water. \n\nCoca-Cola was patented in 1887, registered as a trademark in 1893 and by 1895 it was being sold in every state and territory in the United States. In 1899, The Coca-Cola Company began franchised bottling operations in the United States. \n\nCoca-Cola might owe its origins to the United States, but its popularity has made it truly universal. Today, you can find Coca-Cola in virtually every part of the world.",
"about": "The Coca-Cola Facebook Page is a collection of your stories showing how people from around the world have helped make Coke into what it is today.",
"location": {
"latitude": -33.816989983333,
"longitude": 150.84844081667
},
"can_post": true,
"checkins": 80,
"talking_about_count": 297576,
"type": "page"
}
编辑:
更清楚的解释是:
根据Facebook own的说法,如果用户决定不接受该应用程序,会发生什么情况尚不清楚。我认为用户将重定向回重定向uri,然后您可以检查签名的请求中是否有“user\u id”,但我不是100%确定创建一个简单的应用程序演示并检查:-)您从哪里获得包含PAGE-SLUG的url格式?我是从一个没有用户名的页面获得的。示例:(这里的slug是PCS-POLI)谢谢你的解决方案,我的朋友。但是这种方法让我有些头疼,因为Facebook页面是受限制的(对于管理员,对于国家,对于成人等等),你需要传递一个有效的访问令牌,这样graph api请求才能工作。例如:(对于成人页面)我已经更新了我的答案,以包括私人页面问题的解决方案是的。用户转到页面应用程序,您可以查看他是否安装了该应用程序,如果不安装,您可以使用重定向uri重定向到登录url,该url将转到yourdomain.com/middle page.php?page_id=XXX,然后使用您刚收到的用户访问令牌查询带有真实页面url的图形api。然后,您只需使用?sk=app_YYY(YYY是您的应用程序id)重定向到该页面的url,是否更清楚?我认为此评论比您编辑的答案要好得多。你能把它包括在回答中吗?