/*
Some github API / Web Services depend on authentication.
Authentication via Username:Password won't be supported anymore.
As github is a web browser based application, some of the API expect that you are able to authenticate yourself via a Web Browser
Before using this sample, you should have created an account within github.
Inside this account you need to create something called client_id and client_secret
https://github.com/settings/apps -> OAuth Apps -> Create New
When you launch this php, it will redirect you to
https://github.com/login/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&state={state}
( apparently this stuff works only if you execute php in a web browser )
Then you need to enter your github username/password
Then your web browser should redirect you back to your php code.
Redirect to localhost is working fine - no domain required
*/
<?php
use php\github as hub;
$loc_class_path="..\classes";
set_include_path(get_include_path() . PATH_SEPARATOR . $loc_class_path);
include("phpGithub.php");
include("phpGithubContent.php");
include("hubHelper.php");
require_once("phpGithubServiceArray.php");
/*
It is best, if you get your own client_it and client_secret from github
https://github.com/settings/apps -> OAuth Apps -> Create New
*/
$client_id="c8ea8d4a38b59ae43915";
$client_secret="9c4fa2882e084d94488929e7cd8bfafb55acda7c";
$scope="user";
$github_callback="http://localhost:1080/webs/info/githubclient_current_user.php/";
/* request access code from github - Step 1*/
if( count($_POST) == 0 && count($_GET) == 0)
{
$hub = new php\github\phpGithub();
$hub->AddCurlConfig(CURLOPT_CAINFO, "/path/to/php/extras/cacert.pem");
$hub->requestAccessToken($client_id,$scope,$github_callback);
}
/* convert access code into token from github - Step 2 */
if( count($_POST) >= 0 && count($_GET) == 2)
{
$hub = new php\github\phpGithub();
$hub->AddCurlConfig(CURLOPT_CAINFO, "/path/to/php/extras/cacert.pem");
$response=$hub->convertCodeToToken($client_id,$client_secret,$_GET["code"],$_GET["state"],$github_callback);
if($response->success)
{
if(strpos($response->info["content_type"],"application/x-www-form-urlencoded") !== false)
{
parse_str($response->response,$oauth);
print_r($oauth);
$token=$oauth["access_token"];
$Authorization="Authorization: token $token";
$hub->AddCurlConfig(CURLOPT_HTTPGET, true);
$hub->AddCurlHeader(CURLOPT_HTTPHEADER, array($Authorization,"Accept: application/vnd.github.machine-man-preview+json"));
/* call API / Web Service that requires Authorization - Step 3 */
$response=$hub->callWebService("current_user_url");
}
}
}
/* process github current user response */
if($response->success)
{
echo $response->urlip ." " . $response->url ." " . $response->http_code . "<br>";
hub\helper::printTableFromArray($response->response);
}
else
{
echo "Request failed<br>";
echo $response;
}
echo $hub->getLastErrorMessage();
?>
|