| Новости | 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>'