Cześć! Wczoraj klasa do obsługi Google API, to dzisiaj w ramach uczciwej konkurencji, moja autorska klasa do obsługi Live API, Microsoftu. Również na przykładzie logowania, ale nic nie stoi na przeszkodzie, aby zmienić "scope" i pobrać kalendarz, lub inne dane z konta. Tak więc... tworzymy plik, np. Live_API.php, a w nim: PHP: <?php define('LIVE_CLIENT_ID', 'Twoje ID aplikacji Live'); define('LIVE_CLIENT_SECRET', 'Twój sekretny klucz'); class Live_API { public function __construct($redirect_uri = null) { $this->redirect_uri = urlencode($redirect_uri); $this->client_id = LIVE_CLIENT_ID; $this->client_secret = LIVE_CLIENT_SECRET; } public function Dialog($scope = 'wl.basic wl.emails wl.calendars wl.contacts_emails') { return sprintf("https://login.live.com/oauth20_authorize.srf?client_id=%s&scope=%s&response_type=code&redirect_uri=%s", $this->client_id, $scope, $this->redirect_uri ); } public function GetAccessToken() { if ($this->IsAccessToken() === true) { return $_COOKIE['LIVE_ACCESS_TOKEN']; } $source = sprintf("https://login.live.com/oauth20_token.srf?client_id=%s&redirect_uri=%s&client_secret=%s&code=%s&grant_type=authorization_code", $this->client_id, $this->redirect_uri, $this->client_secret, $_GET['code'] ); $response = json_decode(file_get_contents($source), true); if (!isset($response['access_token'])) { return 0; } setcookie('LIVE_ACCESS_TOKEN', $response['access_token'], time() + 3600, '/', $_SERVER['SERVER_NAME']); return $response['access_token']; } public function Get($graph = 'me') { $access_token = $this->GetAccessToken(); if (empty($access_token)) { return array(); } $source = sprintf("https://apis.live.net/v5.0/%s?access_token=%s", $graph, $access_token); $response = file_get_contents($source); return json_decode($response, true); } public function IsAccessToken() { if (isset($_COOKIE['LIVE_ACCESS_TOKEN'])) { return true; } return false; } } Tworzymy teraz plik live.php, a wykorzystanie, może wyglądać np. tak: PHP: <?php ob_start(); include_once('Live_API.php'); $oLive_API = new Live_API('http://twoja-strona.com/live.php'); if (!isset($_GET['code']) AND $oLive_API->IsAccessToken() === false) { $dialog = $oLive_API->Dialog(); Header('Location: ' . $dialog); exit; } $graph = $oLive_API->Get(); if (!isset($graph['emails']['account'])) { // Jeżeli nie udało się pobrać danych } // Wyświetlamy pobranego maila echo $graph['emails']['account']; Przykładów wykorzystania, może być wiele Pozdrawiam, Rafał
Bardzo fajne i proste rozwiązanie napisane spójnie z tym od API google. Można je wykorzystać w prosty sposób i uatrakcyjnić sposób korzystania ze strony. Dzięki za klasę Czekam na więcej