WebWost WebWostbeta

Авторизация через lastfm

Скрипт авторизации через lastFM для вашего сайта.

Al-Sher

Сегодня я решил продолжить работу над авторизациями через соц сети :)

Весь код можно найти тут

Для начала нужно получить необходимые данные, сделать это можно тут тут.

Теперь, как и в прошлый раз, я разберу весь код :)

Ну как обычно мы создаем массив для необходимых данных $lfm=array(
'key'=>'Ключ',
'secret'=>'Секретный_ключ',
'redirect'=>'Страница_редиректа?state=lfm'
);

Теперь самое время создать ссылку для авторизации: $link='<a href="http://www.last.fm/api/auth/?api_key='.$lfm["key"].'&cb='.$lfm["redirect"].'">Аутентификация через LastFM</a>';
echo $link;

Проверяем пришел ли необходимый для нас код и правда ли мы пришли от lastfm: if(isset($_GET["token"]) and isset($_GET["state"]) and @$_GET["state"]=='lfm') {

Если всё хорошо, то получаем токен и создаем хеш необходимых нам данных: $token=$_GET["token"];
$key=md5("api_key".$lfm["key"]."methodauth.getSessiontoken".$_GET["token"].$lfm["secret"]);

Теперь пишем простой пост запрос: $curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://ws.audioscrobbler.com/2.0/?method=auth.getSession");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, "api_key=".urldecode($lfm["key"])."&token=".urldecode($_GET["token"])."&api_sig=".urldecode($key));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
curl_close($curl);
Так как получаемый ответ написан в xml формате нам необходимо разобрать строку и получить ник пользователя: $p = xml_parser_create();
xml_parse_into_struct($p, $result, $result);
xml_parser_free($p);

Создаем переменную с ником пользователя: $user=$result[2]["value"];

Ну и последний наш шаг - получение информации о пользователе: $userInfo=json_decode(file_get_contents("http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=".$user."&api_key=".$lfm["key"]."&format=json")); Переменная userInfo имеет структуру объекта, а не массива, а значит нужно обращаться к данным примерно так: $userInfo->id.

Ну вот и всё) Спасибо за внимание :)

0 Комментариев

Новый комментарий