J'ai téléchargé la version du serveur (PDO) disponible pour le OAuth 2.0 ici: http://code.google.com/p/oauth2-php/
Je ne sais pas si c'est la meilleure mise en œuvre honnêtement.
Il est configuré et renvoie actuellement une erreur JSON indiquant qu'il attend qu'un client lui transmette les arguments corrects.
Maintenant, il est livré avec un dossier "lib" qui contient un fichier Client .inc. Honnêtement, je ne sais pas comment l'utiliser car il n'y a pas PHP exemple que j'ai trouvé dans l'archive et je n'ai rien trouvé en ligne. J'ai trouvé un exemple pour Drupal en utilisant cette bibliothèque, mais c'est un gâchis étant donné qu'ils ont leurs propres fonctionnalités liées à Drupal en tant que module.
Je me demandais si quelqu'un ici avait eu de la chance en utilisant cette bibliothèque cliente PHP, et si oui, peut-il partager un exemple qui se connecte, autorise puis redirige vers l'URL de rappel avec la session pour pouvoir accéder aux appels de page/api protégés?
Je voulais essayer l'API Facebook Graph (opensource), mais je l'ai trouvée très personnalisée pour Facebook et je ne savais pas très bien où je devais placer l'URL du serveur OAuth 2.0 que j'ai installé moi-même) serveur.
La configuration d'un fournisseur OAuth2 est assez facile une fois que vous savez comment fonctionne le protocole. Il s'agit d'un processus en 2 ou 3 étapes (selon votre configuration et si vous obtenez des jetons au nom d'un utilisateur ou simplement depuis le serveur).
Ce dont vous aurez besoin:
Ce dont vous aurez besoin pour savoir comment faire avec votre code:
/authorize
et /token
)La première étape pour obtenir un jeton consiste à appeler /authorize?response_type=code&client_id=[YOUR ID]&redirect_uri=[YOUR REDIRECT URI]&scope=[YOUR SCOPE]
, où:
À la fin (il y a généralement un bouton d'envoi), votre navigateur sera redirigé vers l'URI spécifié avec un code dans l'URL (code = blah). Enregistrez cette valeur.
Lorsque vous avez ce code, appelez l'autre point de terminaison: /token?client_id=[YOUR ID]&client_secret=[YOUR SECRET]&grant_type=authorization_code&scope=[YOUR SCOPE]&code=[YOUR CODE]&redirect_uri=[YOUR REDIRECT URI]
Les paramètres: - client_id - encore une fois, votre clé publique client - client_secret - votre clé privée ( c'est censé être un appel côté serveur) - portée - la portée du jeton - DOIT CORRESPONDRE LE PREMIER APPEL - redirect_uri - l'URI de redirection - DOIT CORRESPONDRE AU PREMIER APPEL - code - le code que vous avez reçu
Si tout s'est bien passé, vous verrez un objet JSON sur votre écran contenant les informations de jeton.
Étape 1 (autoriser)
Lorsque vous confirmez le formulaire, le serveur crée un jeton temporaire (jeton d'authentification comme on les appelle), qui a généralement une durée de vie très courte (mon code sp oauth2 définit généralement cela à 60 secondes). C'est le temps que votre serveur doit passer de la réception du code à l'étape de déclenchement 2. C'est juste un système de confirmation, et son but est également de stocker les informations fournies à l'étape 1 pour éviter les détournements .
Étape 2 (jeton)
C'est là que votre jeton d'accès est réellement créé. Beaucoup de vérifications, beaucoup de choses, mais au final, le jeton n'est qu'une valeur qui relie votre client_id et votre jeton. C'est tout.
Plug sans vergogne: si vous utilisez le framework Laravel, j'ai construit exactement cela à partir de zéro (plutôt que d'utiliser l'exemple de code merdique et non documenté): http: // bundles .laravel.com/bundle/oauth2-sp
PHP a un client PECL: http://www.php.net/manual/en/book.oauth.php
Belle introduction sur oauth2: http://www.slideshare.net/aaronpk/an-introduction-to-oauth-2
Ce site oauth2.net/2/ liste 3 oauth serveur à différents stades de développement.
Les grands fournisseurs (Facebook, Google, Yahoo, Twitter, etc.) implémentent leur propre version d'Oauth, et de plus Oauth 2.0 est toujours en projet de révision, chaque fournisseur suit une révision différente
Je travaille sur un type de ce client PHP qui fait ce qui suit:
La réponse courte est: curl + JSON
Tous les processus d'authentification demandés avec curl à mon script côté serveur qui prend les variables d'authentification, puis traitent et comparent et à la fin, la réponse écho 'JSON Encoded' contient plusieurs variables en écho renvoyées au client.
Après la réponse, les variables rassemblées 'JSON Decode' en tant que variables indépendantes et maintenant le script côté client savent quoi faire pour ce client.
Donnez ensuite à l'utilisateur actuellement authentifié (spécifié par Sessions) quelques outils. Tout le travail est exécuté dans PHP Desktop , un serveur Web intégré de mangouste avec PHP et le support curl. En fait, il n'est pas nécessaire d'utiliser une lib donc PHP possède sa propre bibliothèque complète. Utilisez curl, JSON et en PHP côté serveur, MySQL (vérification conditionnelle) est suffisant à des fins d'authentification.
Je suis en partie troublé par votre question. Vous avez dit "qu'il est configuré et renvoie actuellement une erreur JSON indiquant qu'il attend qu'un client lui transmette les arguments corrects", et pourtant vous voulez un exemple de quelque chose qui "se connecte, autorise puis redirige vers l'URL de rappel "? Si vous avez tout opérationnel et attendez d'accepter les demandes, vous devriez pouvoir simplement utiliser une demande jQuery Ajax (en utilisant l'en-tête d'autorisation) pour faire une demande. Tant que vous avez le client_id et le client_secret connectés, il devrait renvoyer tout ce que votre API Web est configurée pour vider.