node.js - 如何在react JS或React-Redux JS中验证CloudKit JS

标签 node.js reactjs redux react-redux cloudkit-web-services

我对网络开发非常陌生。 我已经下载了 CloudKit JS 并在 script 标签中添加了 index.html 。我确保它在我的 React-Redux 包 JS 之前加载。

  <script src="/cloudkit.js"></script>
  <script src="/bundle.js"></script>

我已经制作了单类组件,并且正在组件上运行身份验证,安装如下。

componentWillMount() {
CloudKit.configure({
  containers: [{
    containerIdentifier: '<container ID>',
    apiToken: '<secret api token>',
    environment: 'development'
  }]
});
var container = CloudKit.getDefaultContainer();
container.setUpAuth().then(function(userInfo) {
  if(userInfo) {
            console.log(userInfo);
        } else {
            console.log('need to login');
        }
    });
}

然后我收到以下错误 enter image description here 如何使用 CloudKit JS 在 React 中进行身份验证?

最佳答案

421 是预期的:基本上这是 CloudKit JS 检查服务器是否用户已登录。您应该仍然会看到日志语句“需要登录”。

您还应该:

  • 提供应呈现登录/退出按钮的 dom 元素。
  • componentDidMount 中调用 container.setUpAuth 而不是 componentWillMount (调用此方法时,登录按钮的 dom 元素必须存在) )。

示例代码(https://jsfiddle.net/byb7ha0o/4/):

CloudKit.configure({
  containers: [{
    containerIdentifier: '<container>',
    apiToken: '<token>',
    environment: 'development'
  }]
});
const container = CloudKit.getDefaultContainer();

class HelloCloudKitJS extends React.Component {

  constructor() {
    super();
    this.state = {
        userInfo: null
    }
  }

  componentDidMount() {
    container
      .setUpAuth()
        .then(userInfo => {
        if(userInfo) {
            this.setState({userInfo: userInfo});
          return;
        }
        container
          .whenUserSignsIn()
            .then(userInfo => {
                this.setState({userInfo: userInfo})
          })  
      })
  }

  render() {
    return <div>
      <div>
        <div id="apple-sign-in-button"></div>
        <div id="apple-sign-out-button"></div>
      </div>
    </div>;
  }
}

ReactDOM.render(
  <HelloCloudKitJS />,
  document.getElementById('container')
);

关于node.js - 如何在react JS或React-Redux JS中验证CloudKit JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669082/

相关文章:

node.js - 如何解决 d3-array/src/number.js : unknown Statement of type "ForOfStatement" 语法错误

javascript - React-router:传递多个组件会导致不变违规错误

javascript - 如何将 "fallback"值添加到流程中的可选函数参数?

javascript - 为生产、开发、发布设置单独的变量值

javascript - 为什么不使用 Object.assign 通过 reducer 更新状态?

node.js - DynamoDB createTable 如果不存在

javascript - 更复杂的延迟/ promise 使用和链只是不点击。希望得到一些澄清

javascript - 如何在 Express JS 中使用 router.post 使 POST 工作

javascript - 有条件地渲染多个组件——哪种风格更具可读性?

Chrome 中的 Redux Dev Tool 抛出奇怪的错误