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)
);
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/"}
}
}
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();
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>
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>
Puis aussi le fichier request_token.php contenue :
Code : Tout sélectionner
<?php
require_once 'include/oauth.php';
$server->requestToken();
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);
Code : Tout sélectionner
<?php
require_once 'include/oauth.php';
$server->accessToken();
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();
}
}
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,