Question

Je crée des utilisateurs test dans Facebook pour mon application. Cela fonctionne parfois. Quand il ne fait pas, l'erreur se produit sur cet appel:

function getTestAccounts($fb, $a) {
$s = urlencode($a);
**$accounts = $fb->api("/{$fb->getAppId()}/accounts/test-users?access_token=$s");**
if( isset($accounts['data']) )
    return $accounts;
else
    return null;
}

L'erreur est:

Uncaught OAuthException:. (# 15) Cette méthode doit être appelée avec une application access_token

Auparavant, j'ai obtenu le jeton avec cette fonction:

function getAppAccessToken($fb) {
$access_token_url = "https://graph.facebook.com/oauth/access_token";
$parameters = "grant_type=client_credentials&client_id=" . $fb->getAppId() .    "&client_secret=" . $fb->getApiSecret() . "&junk=1";
return file_get_contents($access_token_url . "?" . $parameters);
}

Quand je sortie le jeton offenser, il ressemble à quelque chose comme ça et ne change pas (devrait?)

access_token = 229234510434203 | TK2UDoGCPthCBeDIvhRIPkSG8Wk

J'ai essayé les cookies de compensation. Cela a semblé fonctionner, mais aurait pu être une coïncidence avec autre chose parce qu'il ne maintenant.

Je suppose que jeton d'accès retourné des changements FB, mais il est toujours revenir les mêmes.

Était-ce utile?

La solution 2

J'ai fait une erreur greenhorn. Ce que je ne remarquèrent pas était que ce problème ne se produit que après j'ai ouvert un autre onglet du navigateur et connecté à Facebook comme moi-même ou un utilisateur de test. La nouvelle session Facebook interférait avec l'API.

Je suppose que l'API utilise l'jeton d'accès de l'utilisateur connecté à la place de ce qui est passé dans la demande. Un peu évident une fois que vous comprenez!

Hope this helps la personne suivante: -)

Autres conseils

Mark

pour un accès utilisateur jeton i utilise le ci-dessous, où le nombre est mon identifiant d'application. "Utilisé avec php-sdk"

$access_token = $_SESSION['fb_135669679827333_access_token'];

pour un i CURL accès jeton d'application

$app_access_token = GetCH();
function GetCH(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
if(substr($url,0,8)=='https://'){
    // The following ensures SSL always works. A little detail:
    // SSL does two things at once:
    //  1. it encrypts communication
    //  2. it ensures the target party is who it claims to be.
    // In short, if the following code is allowed, CURL won't check if the 
    // certificate is known and valid, however, it still encrypts communication.
    curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
}
$sendCH = curl_exec($ch);
curl_close($ch);
return $sendCH;
};

Laissez-moi savoir si cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top