✅已解决 | React登录组件 (Guard)的问题

你好 按照官网的例子 1. 在项目入口文件中初始化 [AuthenticationClient] 2. 绑定getAuthClient().logout()事件, 出现如下错误:


{"uniqueId":"f26b4887-0386-4114-a13e60a4a48761d6","code":400,"statusCode":400,"message":"userIds 参数有误"}

请问是什么原因呢

您好,您确认一下在初始化 AuthenicationClient 步骤中是否已填写 appId 。

如下代码在onLogin为authClient注入token后正常 请问什么原因呢?


  /**
   * 登录成功
   * @param userInfo
   * @param authClient
   */
  const onLogin = (userInfo: any, authClient: AuthenticationClient) => {
    const { token } = userInfo;
    authClient!.setToken(token);
  };

初始化已填写appId

我刚刚跑了一个demo,也复现了你的问题,但这是正常的。
我的是因为没有登录就点击退出报了这个错,如果是先登录成功后,再点击退出就不会出现这个问题。
所以您可以这样尝试一下试试能不能解决您的问题:

  1. 先走边上面的登录流程,进行登录。
  2. 再点击退出按钮。

我的是登录了再点击会出现这个问题 除非authClient!.setToken(token); 貌似官网的文档没有提到这一步骤

我并没有遇到您这样的问题,或者您可以把您的关键代码贴出来让我看一下。
我用 create-react-app my-react-app 创建了一个 demo ,然后根据文档测试了一遍是没有发现问题的,也没遇到您这种问题。
或者您可以试一下我这种方式创建一个 demo ,试试会不会出现您这样的问题。
这是我创建完demo的关键代码,您可以参考一下看看:

function App() {
const appId = ‘******’;
const onLogin = (userInfo) => {
}
return (
<div className=“App”>
<AuthingGuard appId={appId} onLogin={onLogin} />
<button onClick={() => getAuthClient().logout()}>退出
</div>
);
}
export default App;

换成AuthingGuard是可以的 我使用的是Guard
@authing/react-ui-components": “^3.0.15”
“react”: “^17.0.2”,


import { Guard } from '@authing/react-ui-components';

您好,我们现在不推荐使用 getAuthClient 的方法。我们推荐在 onLogin 事件回调之中 得到 AuthClient


如果您要使用 getAuthClient 的形式,而不是在事件回调中取出的话,可以使用 getGuardAuthClient。同时我们的文档缺失存在 更新滞后的问题,感谢您的反馈,我们会及时修改文档相关的内容,再次感谢。如果使用的时候还遇到其他的问题,请在论坛内帮忙反馈一下哈。