如何检查用户是否安装了该应用?

时间:2011-09-30 17:21:05

标签: php facebook

我在facebook上有一个应用程序,这是一种用户之间的竞争。每个用户获得积分,得分最多的人获胜。

我将用户的ID保存在数据库的表中。当用户输入应用程序时,会有一个脚本检查他是否已经在表中,如果没有,则会将用户ID添加到表中。

然后,我有一个页面显示所有用户以及他们有多少点。我通过他的ID了解用户名称的图表api,然后在一张漂亮的桌子上显示它。

唯一的问题是:当使用该应用程序的用户从Facebook上安装的应用程序删除它时,我再也无法获得他的名字了,而且我得到了一个未被删除的OAuth异常。

如何检查用户是否安装了应用程序,这样只有当应用程序当前安装在他的脸书上时才能显示他的名字?

2 个答案:

答案 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功能中,您可以添加名称和/或个人资料图片

只是我的两分钱!