-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add file for coming-soon PHP quickstart guide.
- Loading branch information
1 parent
48b4230
commit f37fb9f
Showing
1 changed file
with
113 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
<?php | ||
|
||
// Sample PHP code for user authorization | ||
|
||
// Call set_include_path() as needed to point to your client library. | ||
require_once 'Google/autoload.php'; | ||
require_once 'Google/Client.php'; | ||
require_once 'Google/Service/YouTube.php'; | ||
session_start(); | ||
|
||
/* | ||
* This variable specifies the location of a file where the access and | ||
* refresh tokens will be written after successful authorization. | ||
* Please ensure that you have enabled the YouTube Data API for your project. | ||
*/ | ||
define('CREDENTIALS_PATH', '~/php-yt-oauth2.json'); | ||
|
||
function getClient() { | ||
$client = new Google_Client(); | ||
// Set to name/location of your client_secrets.json file. | ||
$client->setAuthConfigFile('client_secrets.json'); | ||
// Set to valid redirect URI for your project. | ||
$client->setRedirectUri('http://localhost'); | ||
|
||
$client->addScope(GOOGLE_SERVICE_YOUTUBE::YOUTUBE_READONLY); | ||
$client->setAccessType('offline'); | ||
|
||
// Load previously authorized credentials from a file. | ||
$credentialsPath = expandHomeDirectory(CREDENTIALS_PATH); | ||
if (file_exists($credentialsPath)) { | ||
$accessToken = file_get_contents($credentialsPath); | ||
} else { | ||
// Request authorization from the user. | ||
$authUrl = $client->createAuthUrl(); | ||
printf("Open the following link in your browser:\n%s\n", $authUrl); | ||
print 'Enter verification code: '; | ||
$authCode = trim(fgets(STDIN)); | ||
|
||
// Exchange authorization code for an access token. | ||
$accessToken = $client->authenticate($authCode); | ||
|
||
// Store the credentials to disk. | ||
if(!file_exists(dirname($credentialsPath))) { | ||
mkdir(dirname($credentialsPath), 0700, true); | ||
} | ||
file_put_contents($credentialsPath, $accessToken); | ||
printf("Credentials saved to %s\n", $credentialsPath); | ||
} | ||
$client->setAccessToken($accessToken); | ||
|
||
// Refresh the token if it's expired. | ||
if ($client->isAccessTokenExpired()) { | ||
$client->refreshToken($client->getRefreshToken()); | ||
file_put_contents($credentialsPath, $client->getAccessToken()); | ||
} | ||
return $client; | ||
} | ||
|
||
/** | ||
* Expands the home directory alias '~' to the full path. | ||
* @param string $path the path to expand. | ||
* @return string the expanded path. | ||
*/ | ||
function expandHomeDirectory($path) { | ||
$homeDirectory = getenv('HOME'); | ||
if (empty($homeDirectory)) { | ||
$homeDirectory = getenv("HOMEDRIVE") . getenv("HOMEPATH"); | ||
} | ||
return str_replace('~', realpath($homeDirectory), $path); | ||
} | ||
|
||
// Define an object that will be used to make all API requests. | ||
$client = getClient(); | ||
$service = new Google_Service_YouTube($client); | ||
|
||
if (isset($_GET['code'])) { | ||
if (strval($_SESSION['state']) !== strval($_GET['state'])) { | ||
die('The session state did not match.'); | ||
} | ||
|
||
$client->authenticate($_GET['code']); | ||
$_SESSION['token'] = $client->getAccessToken(); | ||
header('Location: ' . $redirect); | ||
} | ||
|
||
if (isset($_SESSION['token'])) { | ||
$client->setAccessToken($_SESSION['token']); | ||
} | ||
|
||
if (!$client->getAccessToken()) { | ||
print("no access token, whaawhaaa"); | ||
exit; | ||
} | ||
|
||
// Call channels.list to retrieve information | ||
|
||
function channelsListByUsername($service, $part, $params) { | ||
$params = array_filter($params); | ||
$response = $service->channels->listChannels( | ||
$part, | ||
$params | ||
); | ||
|
||
$description = sprintf( | ||
'This channel\'s ID is %s. Its title is %s, and it has %s views.', | ||
$response['items'][0]['id'], | ||
$response['items'][0]['snippet']['title'], | ||
$response['items'][0]['statistics']['viewCount']); | ||
print $description . "\n"; | ||
} | ||
|
||
channelsListByUsername($service, 'snippet,contentDetails,statistics', array('forUsername' => 'GoogleDevelopers')); | ||
?> |