Я искал весь интернет, пытаясь найти простой пример, который мог бы указать мне правильное направление, но не повезло, поэтому вот мои вопросы:
Я хочу войти в Ubuntu One и синхронизировать (или почти читать) файлы с моей веб-страницы, и все это с помощью PHP. Потребности в доступе к файлам описаны на этой странице: https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/
Я могу выполнить первый запрос:
$url = 'https://login.ubuntu.com/api/1.0/authentications?ws.op=authenticate&token_name=Ubuntu%20One%20@%20try1';
$data = curlPetition(array('URL'=>$url,'USERPWD'=>'user:pass'));
$ar = fopen('uOne','w');fwrite($ar,$data['responseBody']);fclose($ar);
$tokenA = json_decode($data['responseBody'],1);
Хорошо, curlPetition делает только базовые петиции. Обратите внимание, что вам нужен действительный пользователь: передайте ubuntu одну учетную запись. Я получаю ответ правильно в json с «consumer_secret», «token», «consumer_key», «name», «token_secret». Даже запись появляется в списке в предоставленных приложениях Ubuntu.
Я установил самый новый OAuth PCL php extensión и он работает хорошо. но когда я пытаюсь:
$api_url = 'https://one.ubuntu.com/api/file_storage/v1/';
$conskey = $tokenA['consumer_key'];
$conssec = $tokenA['consumer_secret'];
$token = $tokenA['token'];
$secret = $tokenA['token_secret'];
$oauth = new OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
$oauth->enableDebug();
$oauth->enableSSLChecks();
$oauth->setToken($token,$secret);
$oauth->fetch($api_url.'~/Ubuntu%20One/');
print_r($oauth->getLastResponse());
Я перехожу на страницу «Идет транзакция OpenID», где вы переходите при ручном входе в Интернет. Я определенно делаю что-то не так. Я попытался получить второй шаг из https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/ с помощью $ oauth-> fetch, $ oauth-> getAccessToken и $ oauth-> getRequestToken, один и тот же ответ для всех с Ошибка 403: S
Я пытался понять, как работает полезная нагрузка, но основные примеры написаны на python, используя «import ubuntuone.couch.auth as auth», что делает токен почти автоматическим.
Я буду рад получить несколько подсказок. Спасибо
источник
Ответы:
Я полагаю, что проблема заключалась в том, что шаг 2 рабочего процесса «создать новый токен», определенный на https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/ , не удался с 503 для вас, потому что служба была на пару пунктов в эти выходные. Вам нужно будет перехватить эту ситуацию и разобраться с ней (503 означает, что вам следует повторить запрос позже, согласно стандартному HTTP).
Я протестировал приведенный ниже PHP (будьте осторожны: я не хакер PHP, так что это может быть не самый идиоматический код), и он отлично работает для меня. Это проходит три шага:
Вы увидите отдельные части, прокомментированные ниже. Помните, что это запрашивает и получает совершенно новый токен; когда у вас есть токен (после шага 2), сохраните его где-нибудь; не запрашивайте новый каждый раз.
источник
Код из одного первого класса, чтобы поговорить с UbuntuOne
Некоторые примеры вызовов (извините за беспорядок и закомментированный код, может быть, однажды документация):
Удачи, надеюсь, это поможет
источник
Обновленная версия, добавлены некоторые функции, исправлена ошибка
источник
Ух ты, Стюарт Лэнгридж, ты для меня как легенда!
Я думаю, что завтра я найду немного свободного времени, чтобы взломать ваш пример и посмотреть, что я получу. Тем временем я разработал некоторые функции, основанные на Curl, чтобы войти и получить доступ к HTML-странице UbuntuOne. Я постараюсь опубликовать это здесь, как только немного стабилизирую.
Да, я напишу почти полный API на основе PHP и заметит вас, только дай мне немного времени, я сейчас немного перегружен: S
Я с удовольствием покажу вам свою работу, возможно, однажды я преодолею свои страхи и подам на работу в Canonical, для меня это как сон. На данный момент я написал небольшой обзор, чтобы показать вам мой текущий проект, и я буду рад выслать вам копию, если вам не все равно. Я хочу выпустить его как Свободное ПО, но я один из тех, кому нужно бункеровать веб-проект и быть уверенным, что он безопасен перед его выпуском.
(это не какая-то постоянная ссылка, извините) http://marcos.colorvamp.com/mongo/lain-and-ubuntu-one/
И если вы проверите основную страницу ... хм, как это сказано на моей земле. «В доме кузнеца деревянные ножи» :-)
Спасибо за ответ :-)
источник