Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有PHP和Curl的API登录_Php_Api_Cookies_Curl_Login - Fatal编程技术网

使用带有PHP和Curl的API登录

使用带有PHP和Curl的API登录,php,api,cookies,curl,login,Php,Api,Cookies,Curl,Login,我正在尝试从API登录并返回配置文件信息,以下是文档的登录部分: 使用指定电子邮件创建的帐户登录。需要现有的基于电子邮件的帐户。有效登录将导致重定向到/99/profile页面,并生成新的sessionid cookie。sessionid保留用户登录,并且持续时间较长(持续数周不活动) 他们建议的PHP代码是: <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://99motos.apiary.io/account

我正在尝试从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);
?>
但可能是前面的错误,它返回“用户不存在”,它应该返回:

200 (OK)
{
    "id": 0,
    "initial_name": "John Doe",
    "first_login": True,
    "is_individual": False,
    "is_rider": False,
    "need_device_info": True,
}

有人吗?\。很抱歉这个冗长的问题。。。谢谢。

在curl中使用follow location选项,以便它自动重定向到指向
位置的url:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
另外,使用cookie jar存储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);

我不知道在哪里可以不用文件就使用cookie jar。在其他语言(如PERL)中,它可以。对PHP不太清楚。买的方式,编辑/删除您的***从以前的评论,否则一些版主可以标记为标志!我很高兴看到它对你有用:-)不得不删除评论。谢谢
$__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);