簡體   English   中英

使用API​​和PHP和Curl登錄

[英]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_individualis_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM