Facebook范围是否会重复?

时间:2015-04-16 06:03:06

标签: php facebook facebook-graph-api

我有两个应用,AB,它们都共享相同的帐户数据库。有了新的Facebook政策,我会从不同的应用获得不同的范围ID,Facebook有ids_for_business可以查看,如果我添加了应用C,会有一个新的范围ID和登录,我可以使用ids_for_business检查我是否使用了范围ID已存在于帐户数据库中,然后使用那个要登录,他可以获得他所有的记录,但是范围内的ID会在应用程序中重复吗?例如,应用A的范围ID为123456,应用C的范围ID为123456,是否会发生?

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();

include 'vendor/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;

$id = 'xxxx';
$secret = 'xxxx';
$url = 'url';

FacebookSession::setDefaultApplication($id, $secret);
$helper = new FacebookRedirectLoginHelper($url);

try {
    if(isset($_SESSION['access_token'])) {
        $session = new FacebookSession($_SESSION['access_token']);
    } else {
        $session = $helper->getSessionFromRedirect();
    }
} catch(FacebookRequestException $ex) {
    // When Facebook returns an error
    echo '<pre>'; var_dump($ex->getMessage()); echo '</pre>';
} catch(\Exception $ex) {
    // When validation fails or other local issues
    echo '<pre>'; var_dump($ex->getMessage()); echo '</pre>';
}

if ($session) {
    $_SESSION['access_token'] = $session->getToken();
    $request = (new FacebookRequest($session, 'GET', '/me/ids_for_business'))->execute();
    $idGroup = (array)$request->getGraphObject()->getProperty('data')->asArray();
    $userId = current($idGroup)->id;
    $request = (new FacebookRequest($session, 'GET', '/' . $userId))->execute();
    $user = $request->getGraphObject()->asArray();

    // Todo: Check if user has scope id in data base by $idGroup
    // if none register new one
    // if yes login with that scope id
} else {
    echo '<a href="' . $helper->getLoginUrl() . '">go</a>';
}

1 个答案:

答案 0 :(得分:0)

App Scoped ID是全球唯一的。 App A和App C的App Scoped ID将不相同。

https://developers.facebook.com/docs/graph-api/reference/user#Reading “此人的用户帐户的ID。此ID对每个应用都是唯一的,不能在不同的应用中使用”