2016-04-16 7 views
0

私はWeb開発のために非常に新しいです。 scriptタグのindex.htmlにCloudKit JS &を追加しました。そして私はそれが私のreact-reduxバンドルJSの前にロードされていることを確かめました。JSまたはReact-Redux JSを反応させてCloudKit 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'); 
     } 
    }); 
} 

は、それから私は私がCloudKit JSと反応で認証するにはどうすればよいのエラーenter image description here を次のですか?

+0

あなたが反応外に同じコードを実行しようとすることはできますか? CloudKitのみで問題が発生しているようです – iofjuupasli

+0

CloudKitをさらにReactに使用してデータ処理を行いたいと思います。認証はほんの始まりに過ぎません。実際にはCDNからのスクリプトの非同期読み込みが始まっていますが、その問題を回避するためにスクリプトにダウンロードしました。 –

答えて

3

421が期待されています。基本的に、CloudKit JSがサーバーにログインしているかどうかを確認しています。ログインする必要があります。

また、必要があります。

  • は、サインイン/サインアウトボタンがにレンダリングされるべきDOM要素を提供します。
  • componentWillMountの代わりにcontainer.setUpAuthcomponentDidMountに呼び出します(このメソッドを呼び出すと、サインインボタンの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') 
); 
+0

私は実際にこの結論に至りました。今日私はその質問を削除するようになった。しかし、私は代わりにあなたにポイントを与えたいと思います。ご協力いただきありがとうございます。 –

関連する問題