通过post从api中检索身份验证令牌

时间:2014-01-17 12:40:37

标签: php api authentication post

我正在尝试构建一个使用simplenote api的应用程序,但我遇到了身份验证部分的问题。我收到400错误(错误的请求)。 我猜这个问题与simplenote api无关,而是我对文档的理解。

这是api所说的:

  

HTTP POST到以下URL:   https://simple-note.appspot.com/api/login

     

请求的主体应该包含这个,但是base64编码:   电子邮件= [电子邮件地址]&安培;密码= [口令]

     

要清楚,您将连接email =与用户的电子邮件地址(已修剪),   & password =,以及用户的密码;然后base64生成的字符串并将其发送为   HTTP请求正文。 (不要使用标准变量对此请求进行编码   用于POST的Web表单的编码。我们基本上忽略了Content + Type标头   对于这个请求,但text / plain在这里最有意义。)

到目前为止,这是我的代码:

    $url = 'https://simple-note.appspot.com/api/login';
    $data = array('email' => base64_encode($email), 'password' => base64_encode($password));

    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => 'POST',
            'content' => http_build_query($data),
        ),
    );
    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);

    var_dump($result);

1 个答案:

答案 0 :(得分:0)

我认为他们的意思是:

$data = base64_encode(http_build_query(array(
    "email" => $email,
    "password" => $password
));

因此base64对结果字符串进行编码,而不是单个部分。

至于提出要求。我建议你看一下cURL,它比<{1}}更快