3

我已经使用 ember-simple-auth 进行 fb 登录。我能够获取 fb 的 access_token 并将令牌发送到我的服务器以交换服务器令牌。这工作正常,并且我能够过渡到用户提要页面。但是我面临的问题是第一次用户。在将他们带到他们的提要屏幕之前,我必须向他们展示一些入职屏幕。从下次开始,我可以跳过他们的入职过程。

torii.js

export default Torii.extend({
  torii: service('torii'),

  authenticate() {
    return new RSVP.Promise((resolve, reject) => {
      this._super(...arguments).then((data) => {
        console.log(data.accessToken);
        raw({
          url:      'http://example.co.in/api/socialsignup/',
          type:     'POST',
          dataType: 'json',
          data:     { 'access_token':data.accessToken,'provider':'facebook'}
        }).then((response) => {
          console.log(response.token);
          resolve({
            // jscs:disable requireCamelCaseOrUpperCaseIdentifiers
            access_token: response.token,
            // jscs:enable requireCamelCaseOrUpperCaseIdentifiers
            provider: data.provider
          });
        }, reject);
      }, reject);
    });
  }
});

我从我的服务器得到的响应是这样的。

对于第一次用户。

{access_token:'abcd...',signup_done:false}

当 Signup_done 为假时,我必须向用户显示入职屏幕并向服务器“ http://example.co.in/api/post/signupdone ”发出 POST 请求

对于普通用户

{access_token:'abcd...',singup_done:true}

这次我必须将用户移动到他们的提要屏幕,跳过入职屏幕。

我想将 singup_done 从服务器保存到我的 cookie 或浏览器本地存储(不确定)。这样我就可以在我的车把、控制器、模型、组件中使用这个值。我也愿意接受其他建议来用简单的方法实现这一点.请使用代码示例。提前致谢。

4

1 回答 1

1

您可以通过设置将数据保存在会话data中:

this.get('session').set('data.signupDone', true);

这种方式signupDone将被保留(在会话无效时也是如此)。当然,如果用户在另一个浏览器中登录,则该数据将不再存在,因此您可能应该将属性存储在服务器端的资源中。

于 2016-02-08T10:40:14.167 回答