我使用Knackhq.com的API构建了一些PHP页面。关于如何设置特定呼叫的文档不是很好,所以我想将这个问题发布给社区,希望它能帮助我自己和其他人快速实现这一目标。
我需要使用PHP帖子返回用户的登录状态和信息。我的代码下面没有返回任何对象,感谢您的帮助。
<?php
/* Query all of the records in an object using GET */
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.knackhq.com/v1/applications/XXXXAPP-IDXXXX/session");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"email":"MY-EMAIL-HERE","password":"MY-PASSWORD-HERE"}');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "X-Knack-Application-Id: " . $kn_appID, "X-Knack-REST-API-Key: " . $kn_APIKey));
$returnVal = json_decode(curl_exec($ch));
echo json_encode($returnVal);
// close our curl connection
curl_close($ch);
?>
答案 0 :(得分:0)
感谢Muzza,我在发布问题之前完成了你所链接的说明......他们的文档的正确部分但是Knackhq并没有完全解决问题。此外,好好赶上&#34; GET&#34;应该是&#34; POST&#34;,我在下面的解决方案中改变了它。
要完成这项工作,您需要使用&#34; $ _ SESSION [&#39; VAR_NAME&#39;]并将POST字段附加到表单/登录值。用户提交电子邮件和密码后,PHP POST将验证他们是否为注册用户并返回ID,令牌,电子邮件,状态,全名等。一旦返回,您可以将其中的每一个链接到&#34 ; $ _ SESSION [&#39; VAR_NAME&#39;]&#34;它将贯穿整个网站。在任何时候,您都可以在对数据库的API调用中包含这些会话,以过滤连接到此特定用户的记录(每次用户访问该站点时,他们都需要再次登录以生成工作会话)。
这是我的代码:
<?php
session_start();
$accessuserArray = array(
'email' => $_POST['your_html_form_email_value'],
'password' => $_POST['your_html_form_password_value']
);
$accessuserData = json_encode($accessuserArray);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.knackhq.com/v1/applications/XXXAPP-IDXXX/session");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $accessuserData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
$returnVal = json_decode(curl_exec($ch));
$_SESSION["userId"] = $returnVal->session->user->id;
$_SESSION["userNameFirst"] = $returnVal->session->user->values->field_66->first;
$_SESSION["userNameLast"] = $returnVal->session->user->values->field_66->last;
$_SESSION["userEmail"] = $returnVal->session->user->values->field_67->email;
curl_close($ch);
?>
希望这有助于其他人!