首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bigcommerce客户登录api (单点登录)无效登录问题

Bigcommerce客户登录api (单点登录)无效登录问题
EN

Stack Overflow用户
提问于 2017-02-14 22:22:29
回答 2查看 1.4K关注 0票数 3

我是bigcommerce和jwt令牌的新手。我试图让客户登录api在一家小店上工作。但一直未能成功地自动登录客户。

我让它工作了一两次,但现在它已经不起作用了,而且由于代码没有什么变化,所以无法找出奇怪的行为。我尝试过搜索其他人是否有问题的客户登录api,但没有发现任何。

我已经阅读了关于https://developer.bigcommerce.com/api/v2/#customer-login-api的教程,并复制了所提供的示例。下面的代码中有什么我遗漏了吗?

  • 我去了developer.bigcommerce.com并创建了一个草稿应用程序。
  • 我从草稿应用程序中得到了客户ID和客户秘密。
  • 我已经进入我的试用商店,并成功地安装了草稿应用程序。
  • 我也在SSL上测试过这个页面。
  • 是不是因为它是一家小店,只有当它是一家真正的商店时,它才能起作用?

谢谢。

下面是php代码:

代码语言:javascript
复制
include "vendor/autoload.php";

use Bigcommerce\Api\Client as Bigcommerce;
use Firebase\JWT\JWT;

function getCustomerLoginToken($id, $redirectUrl = '', $requestIp = '') {
  /*
  if (empty(self::$client_secret)) {
    throw new Exception('Cannot sign customer login tokens without a client secret');
  }
  */

  $payload = array(
     'iss' => '#MyApp1's Client ID#',
     'iat' => time(),
     'jti' => bin2hex(random_bytes(32)),
     'operation' => 'customer_login',
     'store_hash' => '#Store Hash#',
     'customer_id' => $id
  );

  if (!empty($redirectUrl)) {
    $payload['redirect_to'] = $redirectUrl;
  }

  if (!empty($requestIp)) {
    $payload['request_ip'] = $requestIp;
  }

  return JWT::encode($payload, "#MyApp1's Client Secret#", "HS256");
}

$jwt = getCustomerLoginToken(1);

header("Location: " . 'https://store-#Store Hash#.mybigcommerce.com/login/token/' . $jwt);
exit();
EN

回答 2

Stack Overflow用户

发布于 2017-02-15 21:09:35

有几个约束可能导致错误:

  • 应用程序必须安装在商店中(看起来这里一切都很好--您也可以使用在商店中本地创建的API令牌- https://support.bigcommerce.com/articles/Public/Store-API-Accounts/)进行测试。
  • 应用程序必须具有登录OAuth范围。
  • 必须在大约30秒内访问JWT,否则它将无法工作。
  • 生成JWT的计算机/服务器需要一个同步的时钟,否则您的IAT值将在30秒前创建,甚至在将来也会失败。
  • URL只能访问一次--如果有任何东西运行GET请求,而不是针对预期的最终用户浏览器,它将无法工作。例如,如果您在Slack消息中发送URL,slack将尝试通过访问它来预览链接,从而使其失效。
  • 最好是反复检查您的JWT在https://jwt.io/上是否有效

如果排除了上述情况,BigCommerce支持可以访问日志,从而更好地了解情况。

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2020-04-13 10:08:15

不需要应用程序client_id和秘密代码,您需要api的client_id和秘密代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42237343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档