Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查用户是否安装了该应用程序?_Php_Facebook - Fatal编程技术网

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

Php 如何检查用户是否安装了该应用程序?,php,facebook,Php,Facebook,我在facebook上有一个应用程序,这是一种用户之间的竞争。每个用户获得积分,积分最多的用户获胜 我将用户的ID保存在数据库的一个表中。当用户进入应用程序时,会有一个脚本检查他是否已经在表中,如果没有,它会将用户id添加到表中 然后,我有一个页面,显示所有用户以及他们的分数。我通过GraphAPI通过他的ID获取用户名,然后将其显示在一个漂亮的表上 唯一的问题是:当使用该应用程序的用户从facebook上安装的应用程序中删除该应用程序时,我无法再获得他的名字,并且我得到了一个未捕获的OAuth

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

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

然后,我有一个页面,显示所有用户以及他们的分数。我通过GraphAPI通过他的ID获取用户名,然后将其显示在一个漂亮的表上

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


如何检查用户是否安装了该应用程序,以便仅当该应用程序当前安装在其facebook上时,我才能显示其姓名?

基本上,以下是您需要执行的操作

<?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'];
}

我建议检查此客户端

然后,当用户返回时,您可以执行此操作以查看权限是否仍然可用,如果没有,请再次请求权限:

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();
                }
            });
        }
    });
在安装的应用程序中,您可以在该函数中添加名称和/或配置文件


就我的两分钱

使用JSSDK,您可以访问FQL查询:“从user WHERE uid=me()中选择is_app_user”。这可能也适用于其他SDK。您需要任何权限才能使用api获取用户名吗?不过,我相信您可以直接从Graph api获取用户名,如下所示:
$user\u profile=json\u decode(file\u get\u contents('shttps://graph.facebook.com/UID')); $name=$user\u profile->name