我有两个应用,A
和B
,它们都共享相同的帐户数据库。有了新的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>';
}
答案 0 :(得分:0)
App Scoped ID是全球唯一的。 App A和App C的App Scoped ID将不相同。
https://developers.facebook.com/docs/graph-api/reference/user#Reading “此人的用户帐户的ID。此ID对每个应用都是唯一的,不能在不同的应用中使用”