/*
 
 
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();
 
 
?>
 
 |