我在facebook上有一个应用程序,这是一种用户之间的竞争。每个用户获得积分,得分最多的人获胜。
我将用户的ID保存在数据库的表中。当用户输入应用程序时,会有一个脚本检查他是否已经在表中,如果没有,则会将用户ID添加到表中。
然后,我有一个页面显示所有用户以及他们有多少点。我通过他的ID了解用户名称的图表api,然后在一张漂亮的桌子上显示它。
唯一的问题是:当使用该应用程序的用户从Facebook上安装的应用程序删除它时,我再也无法获得他的名字了,而且我得到了一个未被删除的OAuth异常。
如何检查用户是否安装了应用程序,这样只有当应用程序当前安装在他的脸书上时才能显示他的名字?
答案 0 :(得分:1)
基本上,这就是你需要做的事情。
<?php
include_once("facebook.php");
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET
));
$user = $facebook->getUser();
try {
$user_profile = $facebook->api('/me');
} catch(FacebookApiException $e) {
$user = null;
}
if($user) {
// authenticated user
$name = $user_profile['name'];
}
这为当前登录用户发出API请求,如果失败,则捕获异常并将$ user变量设置为null。然后你可以做一个简单的检查,看看$ user是否存在。
希望这会指出你正确的方向。
答案 1 :(得分:0)
我想建议检查这个客户端。
然后当用户返回时,您可以执行此操作以查看权限是否仍然可用,如果没有再次请求:
FB.getLoginStatus(function(response){
if(response.status == 'connected'){
appisinstalled-actonthis();
}else{
// request permissions
FB.login(function(response){
if(response.status == 'connected'){
appisinstalled-actonthis();
}else{
handlethecancelpermissions();
}
});
}
});
在appisinstalled-actonthis功能中,您可以添加名称和/或个人资料图片
只是我的两分钱!