не удалось открыть программный центр ubuntu

Я считаю, что проблема заключалась в том, что шаг 2 рабочего процесса «создать новый токен», определенный на https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/, терпел неудачу с 503 для вас, потому что в этот уик-энд сервис упал на пару пунктов. Вам нужно будет уловить эту ситуацию и разобраться с ней (503 означает, что вы должны повторить запрос позже, в соответствии со стандартным HTTP).

Я протестировал ниже PHP (будьте осторожны: я не хакер PHP, поэтому он может быть не самым идиоматическим кодом), и он отлично работает для меня. Он выполняет три этапа:

Создает новый токен в Ubuntu SSO (login.ubuntu.com) (документы API) Скажите Ubuntu One об этом новом токене (документы API) Используйте этот новый токен, чтобы подписать запрос к API файлов Ubuntu One (API docs)

Вы увидите отдельные части, приведенные ниже. Помните, что это запросы и получает новый токен; если у вас есть токен (после шага 2), сохраните его где-нибудь; не запрашивать новый каждый раз.

<?php
function curlPetition($arr){
    $curl = curl_init($arr['URL']);
    if($arr['USERPWD']){curl_setopt($curl, CURLOPT_USERPWD, $arr['USERPWD']);}  
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,2);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    $out = curl_exec($curl);
    curl_close($curl);
    $data['responseBody'] = $out;
    return $data;
}

/* Define username and password details */
$email_address = 'stuart.langridge@canonical.com';
$password = 'MY PASSWORD';

/* Step 1: Get a new OAuth token from Ubuntu Single-Sign-On */
$url = 'https://login.ubuntu.com/api/1.0/authentications?ws.op=authenticate&token_name=Ubuntu%20One%20@%20try1';
$data = curlPetition(array('URL'=>$url,'USERPWD'=> $email_address.':'.$password));
$tokenA = json_decode($data['responseBody'],1);

/* Set up that new token for use in OAuth requests */
$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);

/* Step 2: tell Ubuntu One about the new token (signed with the token itself) */
$tell_u1_about_token_url = 'https://one.ubuntu.com/oauth/sso-finished-so-get-tokens/' . $email_address;
$oauth->fetch($tell_u1_about_token_url);
print_r($oauth->getLastResponse());

/* Step 3: use the token to make a request to the Files API */
$api_url = 'https://one.ubuntu.com/api/file_storage/v1/';
$oauth->fetch($api_url.'~/Ubuntu%20One/');
print_r($oauth->getLastResponse());
?>
1
задан 16 June 2017 в 18:22

0 ответов

Другие вопросы по тегам:

Похожие вопросы: