J'ai cherché sur Internet dans son ensemble en essayant de trouver un exemple simple qui pourrait me diriger dans la bonne direction, mais pas de chance, voici donc mes questions:
Je veux me connecter à Ubuntu One et synchroniser (ou presque lire) les fichiers de ma page Web, tout cela avec PHP. Les besoins d'accès aux fichiers sont tous décrits sur cette page: https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/
Je suis en mesure de compléter la première demande avec:
$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);
Ok, curlPetition ne fait que des pétitions de curl de base. Notez que vous avez besoin d'un utilisateur valide: passez un compte ubuntu. J'obtiens la réponse correctement dans json avec "consumer_secret", "token", "consumer_key", "name", "token_secret". Même l'entrée apparaît dans la liste des applications accordées à Ubuntu.
J'ai installé la plus récente extension php OAuth PCL et son bon fonctionnement. mais quand j'essaye de:
$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());
Je suis déplacé vers la page "Transaction OpenID en cours" où vous passez lorsque vous effectuez une connexion Web manuelle. Je fais définitivement quelque chose de mal. J'ai essayé d'obtenir la deuxième étape depuis https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/ avec $ oauth-> fetch, $ oauth-> getAccessToken et $ oauth-> getRequestToken, même réponse sur tous avec Erreur 403: S
J'essayais de comprendre comment fonctionnait la charge utile, mais les principaux exemples sont écrits en python, en utilisant "import ubuntuone.couch.auth en tant qu'auth", ce qui rend le contenu du jeton presque automatique.
J'adorerai avoir des indices. Merci
la source
Réponses:
Je crois que le problème était que l'étape 2 du workflow "créer un nouveau jeton", défini sur https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/ , échouait avec un 503 pour vous car le service était vers le bas à quelques points ce week-end. Vous devrez intercepter cette situation et y faire face (un 503 indique que vous devez réessayer la demande plus tard, conformément au HTTP standard).
J'ai testé le PHP ci-dessous (attention: je ne suis pas un hacker PHP, donc ce n'est peut-être pas le code le plus idiomatique) et cela fonctionne très bien pour moi. Il passe par trois étapes:
Vous verrez les parties individuelles commentées ci-dessous. N'oubliez pas que cela demande et obtient un tout nouveau jeton; une fois que vous avez le jeton (après l'étape 2), enregistrez-le quelque part; n'en demandez pas à chaque fois.
la source
Code d'une première classe pour parler avec ubuntuOne
Quelques exemples d'appels (srry pour le trouble et le code commenté, peut-être la documentation un jour):
Bonne chance, j'espère que ça aide
la source
Version mise à jour, certaines fonctionnalités ajoutées, certains bugs rattrapés
la source
Wow, Stuart Langridge, tu es comme une légende pour moi !!.
Je pense que demain, je trouverai un peu de temps libre pour pirater votre exemple et voir ce que j'obtiens. Pendant ce temps, j'ai travaillé sur certaines fonctions basées sur Curl pour me connecter et piller la page HTML UbuntuOne. J'essaierai de le poster ici dès que je le stabiliserai un peu.
Oui, je vais écrire une API basée sur PHP presque complète et je vais vous remarquer, donnez-moi seulement un peu de temps, je suis en quelque sorte en surcharge en ce moment: S
J'adorerai vous montrer mon travail, peut-être qu'un jour je surmonterai mes peurs et postulerai pour travailler dans Canonical, c'est comme un rêve pour moi. Pour le moment j'ai écrit une petite critique pour vous montrer mon projet en cours, je serai heureux de vous en envoyer une copie si vous vous en souciez. Je veux le publier en tant que logiciel libre, mais je suis de ceux qui ont besoin de bunker un projet Web et d'être sûr qu'il est sécurisé avant de le publier.
(ce n'est pas une sorte de lien permanent, désolé) http://marcos.colorvamp.com/mongo/lain-and-ubuntu-one/
Et si vous vérifiez la page de base ... hmm comme on dit sur ma terre. "Dans la maison du forgeron, il y a des couteaux en bois" :-)
Merci pour votre réponse :-)
la source