2012-08-08 5 views
0

Ce que je fais est,facebook php sdk mettre l'URL de redirection

Je commence par faire un appel avec ajax au contrôleur/fonction « utilisateurs/authenthicate »

Cette fonction get est la loginUrl du sdk et retourne à javascript qui fait le window.open.href ... sofar sogood .. Je suis dirigé vers la page de connexion facebook,

mais après un login successvol, il redirige vers les mêmes utilisateurs/authentifier.

QUESTION: est-ce le comportement normal? ou puis-je définir le redirecturl ..

QUESTION: il renvoie l'URL sans une barre oblique entre le point d'interrogation afin que la fonction ne soit jamais reconnue comme ceci "users/authenthicate? bladeblibla".

* Je ne mets une url quand j'INSCRITS l'application, mais c'était une url complètement différent quelque chose comme "http: //www.domain/users/facebook_login" *

merci Richard

Répondre

1

vous pouvez définir l'URI de redirection comme suit:

$linkToOauthDialog = $this->facebook->getLoginUrl(

    array(
    'scope'   => SCOPE_OF_THE_APP, 
    'redirect_uri' => REDIRECT_URI 
) 

); 

vous devez également avoir à l'esprit que Safari ne permet pas la définition de cookies tiers dans un iframe, c'est la raison pour laquelle vous avez besoin de rediriger vers votre propre domaine d'abord, où vous mettre un cookie et redi rect à facebook à nouveau. Sinon, vous vous retrouvez dans une boucle infinie.

J'ai décrit cette méthode plus en détail ici: Safari 3rd party cookie iframe trick no longer working?

+0

hm, merci, mais je ne fais pas quelque chose avec un iframe, je pense, ..- c'est une redirection de page complète comme aller google et revenir - je vais essayer votre solution .. – Richard

+0

Oh, je vois . Je pensais que vous obteniez le dialogue auth pour une application facebook, qui fonctionne normalement dans un iframe. –

+0

non, j'en avais besoin pour l'authentification d'un site web, je suis en train de mettre en place toutes les authentifications pour tous les fournisseurs, ensuite yahoo, car votre solution fonctionnait comme un charme. Maintenant que je m'occupe de tous ceux que j'avais l'intention d'utiliser, ou est-ce que vous êtes maintenant un meilleur qui fonctionne avec tous les oauths ou ont-ils tous besoin d'une manipulation spécifique? J'ai aussi lightopenid mais ça ne fait pas l'oauth..YAHOO a aussi son propre sdk..mais est-ce vraiment nécessaire? – Richard

1

Oui, cela est le comportement par défaut du php sdk. Lorsque vous appelez getLoginUrl() et que vous ne spécifiez pas le redirect_uri sur le tableau de paramètres, il essayera d'utiliser l'URL actuelle.

Je pense que ce que vous voudriez utiliser est la méthode FB.login() de JS sdk au lieu de rediriger avec window.open (ouvrira les popups mais vous obtiendrez des informations dans les js de votre page).

+0

non, pas de popups, il fonctionne de la même Comme en-tête dans php – Richard

+1

Oh, je suppose que j'ai seulement utilisé le format 'window.location = 'new url';' avant. Mais alors pas sûr alors pourquoi auriez-vous l'URL de connexion de js alors, pourquoi ne pas simplement envoyer l'utilisateur à l'URL 'users/authenticate' et lui faire utiliser les en-têtes http pour faire la redirection. – complex857

+0

oui, maintenant que vous le mentionnez, ce serait mieux, est-ce que cela fonctionne quand vous commencez avec javascript pour passer le nom du fournisseur, je dois tester un peu plus ... je pense que je l'ai configuré pour le débogage, donc je pouvais voir quelles valeurs sont passées avec firebug..il est plus direct .. – Richard