如何检查给定的用户ID是否已对我的应用进行了身份验证?

时间:2011-04-12 13:30:58

标签: facebook facebook-graph-api

我正在使用Facebook Graph API,想要检查用户是否通过用户ID验证了我的Facebook应用。我该怎么做呢?

3 个答案:

答案 0 :(得分:3)

您使用:

SELECT is_app_user FROM user WHERE uid=USER_ID

这应该返回:

[
  {
    "is_app_user": true
  }
]

如果用户已登录您的应用程序。

答案 1 :(得分:2)

扩展ifaour的答案,在PHP中,这个查询看起来像这样:

<?php
    $facebook = new Facebook(
        'appID' => YOUR_APP_ID, 
        'secret' => YOUR_APP_SECRET
    );

    $result = $facebook->api(array(
        'method' => 'fql.query',
        'query' => "SELECT is_app_user FROM user WHERE uid=$user_id"
    ));

    $is_installed = $result[0]['is_app_user'];

答案 2 :(得分:0)

在这里,您可以将多个请求一起批处理,避免使用FQL。

假设您已登录Facebook并将访问令牌设置为应用程序访问令牌,您可以执行以下操作:

$batch = array();
foreach($friendArray AS $friend) {
    $batch[] = array(
        'method' => 'GET',
        'relative_url' => '/' . $friend . '?fields=installed'
    );
}

FB()->useApplicationAccessToken();
$batchResponse = FB()->facebook()->api('?batch='.json_encode($batch), 'POST');

然后您可以使用以下代码处理批处理响应:

$installedUsers = array();
$notInstalledUsers = array();
foreach ($batchResponse AS $response) {
    $body = json_decode($response['body'], true);
    if (!isset($body['id']))
        continue;

    $id = $body['id'];
    if (isset($body['installed']))
        $installedUsers[] = $id;
    else
        $notInstalledUsers[] = $id;
}