game/vk/FB.php
2023-01-10 18:30:35 +02:00

87 lines
2.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class Utils {
public static function redirect($uri = '') {
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$uri, TRUE, 302);
exit;
}
}
class OAuthFB {
const APP_ID = 902955353157156; //App ID/API Key
const APP_SECRET = '7c7540c3e593a802969be88d0a6553d4'; //App Secret
const URL_CALLBACK = 'https://new-combats.com/social.php?fbconnect'; //URL Вашего сайта, на который произойдет перенаправление
const URL_OATH = 'httpss://www.facebook.com/dialog/oauth';
const URL_ACCESS_TOKEN = 'httpss://graph.facebook.com/oauth/access_token';
const URL_GET_ME = 'httpss://graph.facebook.com/me';
private static $token;
public static $userId;
public static $userData;
/**
* @url httpss://developers.facebook.com/docs/reference/dialogs/oauth
*/
public static function goToAuth()
{
$_SESSION['state'] = md5(uniqid(rand(), TRUE));
Utils::redirect(self::URL_OATH .
'?client_id=' . sprintf('%.0f', self::APP_ID) .
'&redirect_uri=' . urlencode(self::URL_CALLBACK) .
"&state=" . $_SESSION['state']);
}
public static function getToken($code) {
$url = self::URL_ACCESS_TOKEN .
'?client_id=' . sprintf('%.0f', self::APP_ID) .
'&redirect_uri=' . urlencode(self::URL_CALLBACK) .
'&client_secret=' . self::APP_SECRET .
'&code=' . $code;
if (!($response = @file_get_contents($url))) {
return false;
}
parse_str($response, $result);
if (empty($result['access_token'])) {
return false;
}
self::$token = $result['access_token'];
return true;
}
/**
* Если данных недостаточно, то посмотрите что можно ещё запросить по этой ссы21321лке
* @url httpss://developers.facebook.com/docs/graph-api/reference/user
*/
public static function getUser() {
if (!self::$token) {
return false;
}
$url = self::URL_GET_ME . '?fields=id,email&access_token=' . self::$token;
if (!($user = @file_get_contents($url))) {
return false;
}
$user = json_decode($user);
if (empty($user)) {
return false;
}
self::$userId = $user->id;
return self::$userData = $user;
}
public static function checkState($state) {
return (isset($_SESSION['state']) && ($_SESSION['state'] === $state));
}
}
?>