6
votes

Comment autoriser l'application Facebook à l'aide de la redirection dans la toile?

J'essaie d'entrer dans la création d'applications Facebook, mais j'ai du mal à obtenir une autorisation de travailler dans un schéma de redirection à l'intérieur de la toile.

Utilisation de l'API JavaScript, je l'ai eu trop facilement dans un programme de contextuels:

header("Location: https://graph.facebook.com/oauth/authorize?client_id=" . $gAppId . "&redirect_uri=" . urlencode($gUrl) . "&perms=publish_stream");

header("Location: http://www.facebook.com/login.php?v=1.0&api_key=" . $gApiKey . "&next=" . urlencode($gUrl) . "&canvas=");

header("Location: http://www.facebook.com/connect/uiserver.php?app_id=" . $gAppId . "&next=" . urlencode($gUrl) . "&return_session=0&fbconnect=0&canvas=1&legacy_return=1&method=permissions.request");


0 commentaires

4 Réponses :


6
votes

Le problème est que la redirection du côté serveur ne redirige que votre cadre d'application interne au lieu de rediriger la page entière et Facebook n'aime pas l'affichage de la boîte de dialogue de leurs systèmes à l'intérieur des cadres.

Vous auriez besoin de la redirection du côté du client, probablement quelque chose le long de ces lignes: xxx


3 commentaires

Cela fonctionne, mais l'utilisateur finit maintenant à mon URL Canvas au lieu de l'URL de l'application avec ma page dans l'IFrame: S


@Brandon Yep Il ne veut pas vous transmettre à la page App mais va plutôt directement à URL de Canvas. Lorsque j'ai atteint ce problème, je n'ai pas pu trouver une meilleure solution que pour rediriger l'utilisateur à l'URL de l'application (la redirection du côté serveur fonctionnerait maintenant). Vous pouvez détecter s'il est refaire ou non un appel après l'autorisation ou l'appel d'une application régulière en vérifiant les paramètres de la demande. S'il s'agit de l'autorisation de redirection, il doit contenir des paramètres uniques tels que auth_token qui ne sont pas présents dans un appel régulier. Si vous avez détecté ceux-ci - Rediriger l'URL de l'App.


Merci! Spot sur le lot FB aimant la boîte de dialogue d'authentification dans le cadre.



10
votes

Je sais que cela a des mois maintenant ... mais c'est ce que vous devez faire pour ajouter une permission de vérifier à votre toile.

if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
    $accesstoken=$session['access_token'];
  } catch (FacebookApiException $e) {
    error_log($e);
  }
} 

if($me)
{
   // do what you have to do
}else {
    $loginUrl = $facebook->getLoginUrl(
        array(
            'canvas' => 1,
            'fbconnect' => 0,
            'req_perms' => 'publish_stream'
        )
    );
    echo '<script>top.location="'.$loginUrl.'";</script>';
    //echo '<fb:redirect url="' . $loginUrl . '" />';
   //header('Location: '.$loginUrl);
}


0 commentaires

0
votes

Peut-être que cela aide:

    if(!$facebook->api_client->users_isAppUser())
{
    ?>
    <fb:redirect url="http://www.facebook.com/login.php?v=1.0&api_key=111111111111&next=http%3A%2F%2Fapps.facebook.com%2Fapp_name%2F&canvas=&req_perms=publish_stream"/>
    <?php
}


1 commentaires

Ceci est pour une application spécifique. La chose générale contiendra les autorisations de req nécessaires avec les autres choses.



1
votes

Utilisation de SDK FB JavaScript, cela peut être fait quelque chose comme -

FB.getLoginStatus(function(response) {
      if (response.status === 'connected') {
         loggedIn(response);
      } else {
        top.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_APP_URI&response_type=token");
      }


0 commentaires