Very simple github API for PHP using OAuth. 37 LOC for the API class. And a curl helper class with 84 LOC.
php composer.phar require diversen/simple-php-github-api:
Or if you have placed composer.phar in your path
as composer
composer require diversen/simple-php-github-api
There is really only tree methods you can do. Let us see those three methods first. (Further below is an complete example using the built-in server for easy testing).
- Generate an access URL to github.com
$access_config = array (
'redirect_uri' => GITHUB_CALLBACK_URL,
'client_id' => GITHUB_ID,
'state' => md5(uniqid()),
'scope' => 'user'
);
$api = new githubapi();
$url = $api->getAccessUrl($access_config);
echo "<a href=\"$url\">Github Login</a>";
- Callback from github.com
$access_config = array (
'redirect_uri' => GITHUB_CALLBACK_URL,
'client_id' => GITHUB_ID,
'client_secret' => GITHUB_SECRET
);
$api = new githubapi();
$res = $api->setAccessToken($access_config);
if ($res) {
// OK
This is where we will call the api
header("Location: /api_call.php");
} else {
// Not OK. echo errors
echo "Could not get access token. Errors: <br />";
print_r($api->errors);
}
- API call
For full listing see: https://developer.github.com/v3/
// We have a access token and we can now call the api:
$api = new githubapi();
// Simple call - API get current users credentials
// This can also be done without scope
// example
// $command = '/user',
// $request = 'GET', 'POST' or 'PATCH' or 'DELETE' etc. Se API:
// $post = variables to POST array
$command = "/user";
$res = $api->apiCall($command, $request = null, $post = null);
if (!$res) {
print_r($api->errors);
die;
} else {
print_r($res);
}
Example you can run right away using the built-in PHP-server.
Log into github.com
Register a new application at https://github.com/settings/developers
You will see something like this:
Create your app.
Enter base_dir of the simple-php-github-api
:
cd vendor/diversen/simple-php-github-api
cp example/config.php-dist example/config.php
Edit config
Set config in example/config.php
according to above settings and
the screenshot above.
Run test-server with example:
php -S localhost:8080 -t example/
For full listing of all API calls check:
https://developer.github.com/v3/
Scope:
https://developer.github.com/v3/oauth/#scopes
I have not tested many calls - but you should be able to use all. E.g. POST, or PATCH, DELETE.
Create an issue, and Let me hear if it does not work out for you.