Recherche authentification TOKEN

Eléphanteau du PHP | 14 Messages

25 avr. 2017, 14:36

Bonjour tous le monde,

Je vient vers vous pour une aide.
Je galère énormément sur le mise en place de ce tuto
Que moogli ma donnée merci lui,

https://www.sitepoint.com/creating-a-php-oauth-server/

j'ai suivie tous la procédure en vin, il y a des choses que je comprend pas.

Voilà les étapes que j'ai fait :
1er télécharger cela :

https://code.google.com/archive/p/oauth-php/
Décompresser et installer sur mon serveur :
oauth-php-175.tar.gz
Ce qui me donne des répertoires et fichiers de ce type :
- test
- library
- exemple

2ème creer la BDD :

Code : Tout sélectionner

CREATE TABLE users ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL DEFAULT '', password VARCHAR(255) NOT NULL DEFAULT '', email VARCHAR(255) NOT NULL DEFAULT '', created DATE NOT NULL DEFAULT '0000-00-00', PRIMARY KEY (id) );
Installer Composer avec les commande suivante

curl -s https://getcomposer.org/installer | php

Créer le fichier composer.json, avec le contenue suivant :

Code : Tout sélectionner

{ "autoload": { "psr-4": {"Acme\\": "src/"} } }
Puis on taper la commande suivant :
php composer.phar install

Ca ma créer les repertoires suivant avec ces sous fichiers :
- vendors/autoload.php
- composer/autres fichiers

Puis j'ai créer un répertoire et un fichier :
include/common.php
dans le contenue :

Code : Tout sélectionner

<?php require_once '../vendor/autoload.php'; session_start(); // Add a header indicating this is an OAuth server header('X-XRDS-Location: http://' . $_SERVER['SERVER_NAME'] . '/services.xrds.php'); // Connect to database //$db = new PDO('mysql:host=localhost;dbname=oauth', 'dbuser', 'dbpassword'); $db = new PDO('mysql:host=adresse du serveur;dbname=nom de la BDD', 'Login', 'Mot de passe'); // Create a new instance of OAuthStore and OAuthServer $store = OAuthStore::instance('PDO', array('conn' => $db)); $server = new OAuthServer();
Puis est créer formulaire_inscription.php contenue :

Code : Tout sélectionner

<form method="post" action="register.php"> <fieldset> <legend>Register</legend> <div> <label for="requester_name">Name</label> <input type="text" id="requester_name" name="requester_name"> </div> <div> <label for="requester_email">Email</label> <input type="text" id="requester_email" name="requester_email"> </div> <div> <label for="application_uri">URI</label> <input type="text" id="application_uri" name="application_uri"> </div> <div> <label for="callback_uri">Callback URI</label> <input type="text" id="callback_uri" name="callback_uri"> </div> </fieldset> <input type="submit" value="Register"> </form>
Puis créer register.php dans le contenue :

Code : Tout sélectionner

<?php $stmt = $db->prepare('INSERT INTO users (name, email, created) ' . 'VALUES (:name, :email, NOW())'); $stmt->execute(array( 'name' => $_POST['requester_name'], 'email' => $_POST['requester_email'] )); $id = $db->lastInsertId(); $key = $store->updateConsumer($_POST, $id, true); $c = $store->getConsumer($key, $id); ?> <p><strong>Save these values!</strong></p> <p>Consumer key: <strong><?=$c['consumer_key']; ?></strong></p> <p>Consumer secret: <strong><?=$c['consumer_secret']; ?></strong></p>
Générer un jeton de demande
Puis aussi le fichier request_token.php contenue :

Code : Tout sélectionner

<?php require_once 'include/oauth.php'; $server->requestToken();
Échange du jeton de demande pour un jeton d'accès
et aussi login.php contenue

Code : Tout sélectionner

<?php // check if the login information is valid and get the user's ID $sql = 'SELECT id FROM users WHERE email = :email'; $stmt = $db->prepare($sql); $result = $stmt->exec(array( 'email' => $_POST['requester_email'] )); $row = $result->fetch(PDO::FETCH_ASSOC); if (!$row) { // incorrect login } $id = $row['id']; $result->closeCursor(); // Check if there is a valid request token in the current request. // This returns an array with the consumer key, consumer secret, // token, token secret, and token type. $rs = $server->authorizeVerify(); // See if the user clicked the 'allow' submit button (or whatever // you choose) $authorized = array_key_exists('allow', $_POST); // Set the request token to be authorized or not authorized // When there was a oauth_callback then this will redirect to // the consumer $server->authorizeFinish($authorized, $id);
ainsi que access_token.php contenue :

Code : Tout sélectionner

<?php require_once 'include/oauth.php'; $server->accessToken();
Validation d'une demande
J’ai créer le fichier home.php contenue:

Code : Tout sélectionner

<?php require_once 'includes/oauth.php'; if (OAuthRequestVerifier::requestIsSigned()) { try { $req = new OAuthRequestVerifier(); $id = $req->verify(); // If we have a user ID, then login as that user (for // this request) if ($id) { echo 'Hello ' . $id; } } catch (OAuthException $e) { // The request was signed, but failed verification header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: OAuth realm=""'); header('Content-Type: text/plain; charset=utf8'); echo $e->getMessage(); exit(); } }
Test du serveur OAuth

Et je créer le fichier test_request.php contenue :

Code : Tout sélectionner

<?php define('OAUTH_HOST', 'http://' . $_SERVER['SERVER_NAME']); $id = 1; // Init the OAuthStore $options = array( 'consumer_key' => '<MYCONSUMERKEY>', 'consumer_secret' => '<MYCONSUMERSECRET>', 'server_uri' => OAUTH_HOST, 'request_token_uri' => OAUTH_HOST . '/request_token.php', 'authorize_uri' => OAUTH_HOST . '/login.php', 'access_token_uri' => OAUTH_HOST . '/access_token.php' ); OAuthStore::instance('Session', $options); if (empty($_GET['oauth_token'])) { // get a request token $tokenResultParams = OauthRequester::requestRequestToken($options['consumer_key'], $id); header('Location: ' . $options['authorize_uri'] . '?oauth_token=' . $tokenResultParams['token'] . '&oauth_callback=' . urlencode('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'])); } else { // get an access token $oauthToken = $_GET['oauth_token']; $tokenResultParams = $_GET; OAuthRequester::requestAccessToken($options['consumer_key'], $tokenResultParams['oauth_token'], $id, 'POST', $_GET); $request = new OAuthRequester(OAUTH_HOST . '/test_request.php', 'GET', $tokenResultParams); $result = $request->doRequest(0); if ($result['code'] == 200) { var_dump($result['body']); } else { echo 'Error'; } }

J’ai cette erreur :

Warning: require_once(includes/oauth.php): failed to open stream: No such file or directory in /lien_serveur/test/index.php on line 3

Fatal error: require_once(): Failed opening required 'includes/oauth.php' (include_path='.:/etc/phpnet-php/php71-x86_64/lib/php') in /lien_serveur//test/index.php on line 3

Je pense qu’il manque le fichier oauth.php dans includes

Merci de votre aide,

Eléphant du PHP | 115 Messages

26 avr. 2017, 09:55

Bonjour,
Quelqu'un peux m'aider,

Merci a vous,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 avr. 2017, 10:58

salut,

je pense que c'est ton autoload qui foire, as tu compris ce que fait composer pour cela ? et comment ça se configure ?
as tu un répertoire src ?

pur composer il y a des chose sur le net
https://openclassrooms.com/courses/deve ... a-composer
http://www.umanit.fr/En-ce-moment/UmaNo ... r#eztoc1_4
https://www.grafikart.fr/tutoriels/php/composer-480
etc :)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 115 Messages

26 avr. 2017, 12:50

Merci encore,

je pense que c'est ton autoload qui foire, as tu compris ce que fait composer pour cela ?
composer et un gestionnaire de dependance PHP.
Si j'utilise une bibliothèques PHP, il me récupère tous ce qui va avec la bibliothèque.


et comment ça se configure ?
On tape cela sous le terminal SSH connexion serveur :

curl -s https://getcomposer.org/installer | php

On créer le fichier composer.json et écris :

composer.json

Code : Tout sélectionner

{ "require": { "illuminate/foundation": "1.0.*" }, "minimum-stability": "dev" }
et on tape dans terminal :
php composer.phar install

Mais suite a des erreurs

Code : Tout sélectionner

Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for illuminate/foundation 1.0.* -> satisfiable by illuminate/foundation[v1.0.0]. - illuminate/foundation v1.0.0 requires illuminate/blade >=1.0.0 -> no matching package found. Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details. Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
j'ai utiliser cette config :

Code : Tout sélectionner

{ "autoload": { "psr-4": {"Acme\\": "src/"} } }
et ça install les répertoire et fichier

as tu un répertoire src ?
NON PAS DE SRC


Voilà,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 avr. 2017, 14:16

donc
1/ tu as un problème de configuration à la base qui fait que composer ne peux pas résoudre les dépendances : je te conseil de vérifier la version de ce dont tu as besoin
ton package est abandonné (1.1.2 est la dernière version, elle date de 2012), peux être voir pour autre chose ?
tu peux tenter de mettre la version 1.1.2
https://packagist.org/packages/illuminate/foundation
le dépôt github indiqué n'existe pas (ou plus)
Peux être devrais tu simplement utiliser laravel complètement ?
2/ l'article que tu cites indique comment utiliser composer pour utilise la librairie oauth, notament en fournissant le fichier composer.json utilisé.
d’ailleurs tout le code du projet de l'article est disponible https://github.com/phpmasterdotcom/Crea ... AuthServer

3/ il ne faut pas faire de copier / collé sans essayer de comprendre ce que l'on fait. c'est ton problème depuis le début !
est ce que tu as vraiment besoin de tout cela ?
est ce qu'un solution plus simple ne pourrait pas être envisagé ?
Ne peux tu pas prendre quelques heure pour tester et comprendre le code de l'article afin de pouvoir faire la même chose dans ton code (et non essayer de faire rentrer au chausse-pied du code qui ne va pas avec le reste ;) ).


@+
Il en faut peu pour être heureux ......