如何将 Magento 客户授权令牌从 php curl 传递到浏览器?
Posted
技术标签:
【中文标题】如何将 Magento 客户授权令牌从 php curl 传递到浏览器?【英文标题】:How can I pass Magento customer authorization token from php curl to the browser? 【发布时间】:2021-08-02 01:48:41 【问题描述】:我正在尝试将新网站(Wordpress 网站)与 Magento 网站集成,我已经使用 php curl 进行了 API 集成,我还将 Magento 网站网址添加到新网站。
我可以通过 Magento API 创建帐户并对用户进行身份验证,但这仅限于 API 功能,现在的问题是我不知道如何让用户通过新网站(Wordpress 网站)登录当他/她访问 Magento 网站时,他不必再次登录。在两个网站之间(单点登录)。
我尝试了以下方法,但不知道如何将用户数据传递给浏览器,因此他不必再次登录 Magento 网站。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://<my_domain>/rest/V1/integration/customer/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('username' => '<my_username>','password' => '<my_password>'),
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => 2,
));
$token = curl_exec($curl);
echo ($token) . "<hr>";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '<my_domain>/rest/V1/customers/me',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . json_decode($token),
),
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => 2,
));
$response2 = curl_exec($curl);
echo $response2;
【问题讨论】:
【参考方案1】:您可以在 cURL 中设置基本授权
$userName = ""用户名""; $password = ""User_Password"";
$this->curl->setCredentials($userName, $password);
使用 addCookie 方法设置 cURL cookie:
$this->curl->addCookie(""cookie-name"", ""cookie-value"");
查看详细文档:https://devdocs.magento.com/guides/v2.4/get-started/gs-curl.html#set-basic-authorization-in-curl
【讨论】:
以上是关于如何将 Magento 客户授权令牌从 php curl 传递到浏览器?的主要内容,如果未能解决你的问题,请参考以下文章
php CLI php脚本使用直接访问magento集合将客户从magento导出到CSV。
php CLI php脚本使用直接访问magento集合将客户从magento导出到CSV。
如何配置必须使用“密码”授权类型从授权服务器请求令牌的客户端 Java 应用程序?
如何在websocket javascript客户端中传递授权承载访问令牌