如何将 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客户端中传递授权承载访问令牌

IdentityServer4 如何在授权代码流中存储和更新令牌

授权和获取访问令牌后如何将用户传回前端客户端?