2010-09-30 6 views
3

J'ai beaucoup de mal à comprendre comment implémenter Facebook Oauth pour les applications web mobiles. Je voudrais utiliser l'interface "tactile" comme indiqué dans le paramètre "display" dans l'exemple de code suivant sur leur site Web de développeur. Est-ce que quelqu'un a de l'expérience en utilisant ce code? Je n'arrive pas à le faire fonctionner en Javascript. Existe-t-il d'autres façons d'utiliser mes utilisateurs pour voir l'interface de connexion tactile?Facebook Oauth pour le web mobile

Voici la documentation que je me réfère à: http://developers.facebook.com/docs/guides/mobile/

Répondre

5

Oui, il existe un moyen d'autoriser les utilisateurs de votre navigateur mobile à voir l'interface de connexion tactile. Au lieu d'utiliser le SDK FB, vous devez avoir besoin d'utiliser la méthode oauth comme décrit ici:

http://developers.facebook.com/docs/authentication/

J'utilise le ce « Server Side Flow » de faire exactement que vous essayez de le faire et semble fonctionner très bien. Vous devez d'abord rediriger vers la page FB oauth, en passant votre identifiant d'application et votre page de destination en tant que rappel (NOTE: landing_page DOIT être formaté comme un répertoire et ne peut pas être un document!). Passez en display=touch et les données d'application facultatives si vous en avez besoin en utilisant state.

document.location='http://www.facebook.com/dialog/oauth?client_id=' + appid + 
    '&redirect_uri=http://' + landing_page + '/&display=touch&state=' + 
    optional_app_data; 

Après l'utilisateur se connecte avec succès, votre utilisateur sera redirigé vers LANDING_PAGE avec une variable GET de code. Vous pouvez utiliser cette code pour obtenir un access_token si vous avez besoin d'interroger l'API Open Graph pour plus d'informations utilisateur comme celui-ci (en PHP):

$response = file_get_contents("https://graph.facebook.com/oauth/access_token?" 
    ."client_id=FACEBOOK_ID."&redirect_uri=http://". landing_page 
    ."/oauth/&client_secret=".FB_APPSECRET."&code=$authcode"); 

parse_str($response, $params); 

$graph_url = "https://graph.facebook.com/me?access_token=".$params['access_token']; 
1

Je pense que le problème fondamental est que le/oauth/autoriser et/oauth/access_token le cookie ne met jamais le nom fbs_APP_ID que tous les FB.Events souscrivent à . "L'API JavaScript enregistre les détails de l'utilisateur connecté dans un cookie signé nommé fbs_APP_ID": Ceci se produit uniquement en utilisant le standard fb: login-button, etc. Quelqu'un sait comment configurer le cookie fbs_APP_ID en utilisant/oauth?

1

Vous ne pouvez pas vous connecter à un utilisateur en utilisant les boîtes de dialogue Facebook, c'est une mesure de sécurité de facebook. Et l'utilisation de popups est bloquée par la plupart des navigateurs mobiles.

Qu'est-ce que vous pouvez faire est directement à l'utilisateur de http://m.facebook.com/dialog/oauth/?scope=read_stream,publish_stream,offline_access,email&client_id=YOUR APP ID & redirect_uri = '+ window.location +' & response_type = jeton '; Ceci dirigera l'utilisateur vers m.facebook.com pour se connecter via facebook mobile, et redirigera l'utilisateur vers redirect_uri, dans ce cas j'utilise javascript window.location pour obtenir l'URL de la page im actuellement . Il renverra l'information d'utilisateur et un jeton qui sera accédé par Facebook javascript SDK.

Vous pouvez ensuite demander à Facebook javascript SDK comme FB.ui pour d'autres actions tactiles comme post-à-mur, qui a l'air vraiment doux dans une boîte de dialogue.

Cependant, je vais vous dire que j'ai dû héberger le fichier facebook all.js sur mes serveurs et modifier manuellement la largeur de 575px à 290px pour s'adapter à l'écran du téléphone mobile.

Questions connexes