Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Ivan Sergeev 04.02.2013 06:26
Вот авторизация на YouTube, выдрал куски кода из одного прокта. Думаю, что не составит труда модифицировать под свои нужды: ведь там единая авторизация.@USE io/pfCFile.p @auto[] $YouTube[ $.ready(false) ] @main[] ^pfCFile:session{ ^if(^clientLogin[]){ ^if(^getToken[]){ ^rem{ Все ок, можно делать что-то дальше } }{ ^rem{ Токен не получен } } }{ ^rem{ Клиент не атворизован } } } @clientLogin[][res;data] $result(false) ^try{ $res[^pfCFile:load[text;https://www.google.com/youtube/accounts/ClientLogin; $.charset[UTF-8] $.content-type[application/x-www-form-urlencoded] $.enctype[application/x-www-form-urlencoded] $.timeout(20) $.method[POST] $.any-status(true) $.headers[ $.X-GData-Key[key=Здесь надо вставить хеш-строку с ключом] ] $.form[ $.Email[Почта] $.Passwd[Пароль] $.service[youtube] ^rem{ Пример для YouTube } $.source[Проект] ] ] ] ^if($res.status == 200){ $data[^string:js-unescape[$es.text]] $data[^str.split[^#0A;lh]] ^if($data is table){ $YouTube.auth[^data.0.trim[left;Auth=]] $YouTube.user[^data.1.trim[left;YouTubeUser=]] ^if(def $YouTube.auth && def $YouTube.user){ $YouTube.ready(true) $result(true) }{ ^rem{ Ошибка авторизации } } }{ ^rem{ Какое-то не правильное содержание ответа } } }{ ^rem{ Ошибка c ответом } } }{ $exception.handled(true) ^rem{ Ошибка с запросом } } @getToken[][res;data] $result(false) ^if($YouTube.ready){ $xmlfile[^file::create[text;ut;$str]] $res[^file::exec[getYouTubeToken.sh; $.CGI_AUTH[$YouTube.auth] ]] ^if( $res.status == 0 ){ ^try{ ^if(def $res.text){ $data[^xdoc::create{$res.text}] $YouTube.url[^data.selectString[string(response/url)]] $YouTube.token[^data.selectString[string(response/token)]] ^if(def $YouTube.url && def $YouTube.token){ $result(true) }{ ^rem{ Токен не получен, значит что-то не так с запросом/авторизацией } } }{ ^rem{ Какое-то не правильное содержание ответа } } }{ $exception.handled(true) ^rem{ Какое-то не правильное содержание ответа } } }{ ^rem{ Ошибка c ответом } } } Содержимое getYouTubeToken.sh curl --url 'http://gdata.youtube.com/action/GetUploadToken' \ --request POST \ --header 'Content-Type: application/atom+xml; charset=UTF-8' \ --header 'Content-Length: 'Размер отправляемого содержимого (xml)' \ --header 'Authorization: GoogleLogin auth='$CGI_AUTH \ --header 'X-GData-Key: key=Здесь надо вставить хеш-строку с ключом' \ --connect-timeout 15 \ --data '<?xml version="1.0" encoding="UTF-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007"><yt:accessControl action="list" permission="denied"/><yt:accessControl action="comment" permission="denied"/><media:group><media:title type="plain">Проект</media:title><media:description type="plain">0</media:description><media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People</media:category><media:keywords>Ключево слово</media:keywords></media:group></entry>'