[英]Login using API with PHP and Curl
我正在嘗試從API登錄並返回配置文件信息,這是文檔的登錄部分:
使用創建的指定電子郵件帳戶登錄。 需要現有的基於電子郵件的帳戶。 有效的登錄將導致重定向結果到/ 99 / profile頁面,並生成新的sessionid cookie。 sessionid保留用戶登錄信息,並且持續時間長(持續數周的不活動狀態)。
他們引用的PHP代碼是:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://99motos.apiary.io/accounts/login/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "login=string&password=string");
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
?>
我使用此代碼,將“ CURLOPT_HEADER”更改為true,然后用我的帳戶憑據替換了這些字符串。 一切正常,並返回:
HTTP/1.1 302 FOUND Date: Wed, 26 Feb 2014 20:04:43 GMT Server: Apache/2.4.6 (Unix) OpenSSL/1.0.1f mod_wsgi/3.4 Python/2.7.6 Vary: Accept-Language,Cookie Content-Length: 0 Location: https://server.99motos.com/99/profile/ Content-Language: pt-br Set-Cookie: sessionid=n8eb7u29n4q7gapfw3b3hlo0q0koi9t0; expires=Wed, 12-Mar-2014 20:04:43 GMT; httponly; Max-Age=1209600; Path=/ Content-Type: text/html; charset=utf-8
有一個“位置”鏈接到個人資料頁面,但是如何在“ https://server.99motos.com/99/profile/ ”上獲得這些信息? 我知道它返回一個JSON,但是每次我嘗試手動訪問此鏈接時,它都會返回一個說“用戶不存在”的JSON,我認為這是由於會話ID所致。
在此API中,我們可以獲取代碼進行概要分析,這是文檔中的說明,
輪廓:
提供基本的用戶個人資料信息。 盡管前綴很不幸,但這還是一個常規帳戶頁面。 用戶必須登錄(帶有有效的sessionid cookie)才能訪問此頁面。 此頁面會生成有關用戶的常規“簿記”信息,特別是它返回用戶是否已完成成為“個人”(請求乘車者的用戶)和“乘車者”(接受訂購請求的用戶)的注冊,以及該設備是否存在接收PUSH消息所需的信息。 first_login
值已棄用,並由單獨的is_individual
和is_rider
值代替。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://99motos.apiary.io/99/profile/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
但是可能是先前的錯誤,它返回“用戶不存在”,應該返回:
200 (OK)
{
"id": 0,
"initial_name": "John Doe",
"first_login": True,
"is_individual": False,
"is_rider": False,
"need_device_info": True,
}
任何人? ._。 很抱歉這個迫切的問題...謝謝。
使用curl的跟隨位置選項,以便它自動重定向到指向您的Location:
的網址Location:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
另外,請使用cookie罐來存儲cookie,並使用cookie文件來將cookie與請求一起使用以避免會話相關的錯誤。
$__FILE_COOKIE = "c:/temp/cookie.txt"; // or /var/tmp/cookie.txt
curl_setopt($ch, CURLOPT_COOKIEJAR, $__FILE_COOKIE);
curl_setopt($ch, CURLOPT_COOKIEFILE, $__FILE_COOKIE);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.