par
azizs » 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 :
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,
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 :
[b]https://code.google.com/archive/p/oauth-php/[/b]
Décompresser et installer sur mon serveur :
[b]oauth-php-175.tar.gz[/b]
Ce qui me donne des répertoires et fichiers de ce type :
- test
- library
- exemple
2ème creer la BDD :
[code]
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)
);
[/code]
Installer Composer avec les commande suivante
[b]curl -s https://getcomposer.org/installer | php[/b]
Créer le fichier composer.json, avec le contenue suivant :
[code]
{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}
[/code]
Puis on taper la commande suivant :
[b]php composer.phar install[/b]
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]
<?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();
[/code]
Puis est créer formulaire_inscription.php contenue :
[code]
<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>
[/code]
Puis créer register.php dans le contenue :
[code]
<?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>
[/code]
[b]Générer un jeton de demande[/b]
Puis aussi le fichier request_token.php contenue :
[code]
<?php
require_once 'include/oauth.php';
$server->requestToken();
[/code]
[b]Échange du jeton de demande pour un jeton d'accès[/b]
et aussi login.php contenue
[code]
<?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);
[/code]
ainsi que access_token.php contenue :
[code]
<?php
require_once 'include/oauth.php';
$server->accessToken();
[/code]
[b]Validation d'une demande[/b]
J’ai créer le fichier home.php contenue:
[code]
<?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();
}
}
[/code]
[b]Test du serveur OAuth[/b]
Et je créer le fichier test_request.php contenue :
[code]
<?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';
}
}
[/code]
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,