我已经使用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为false时,我必须向用户显示入职者屏幕并向服务器发出POST请求" http://example.co.in/api/post/signupdone"
普通用户
{access_token:'abcd...',singup_done:true}
这一次,我只需将用户移动到跳过屏幕即可进入屏幕。
我想将singup_done从服务器保存到我的cookie或浏览器本地存储(不确定)。所以我可以在我的把手,控制器,模型,组件中使用这个值。我也愿意接受其他建议来实现这个目的用简单的方法。请使用代码示例。提前谢谢。
答案 0 :(得分:1)
您可以通过设置会话data
来保存数据:
this.get('session').set('data.signupDone', true);
那样signupDone
将被保留(同样在会话失效时)。当然,如果用户在另一个浏览器中登录,数据将不再存在,那么您应该将该属性存储在服务器端的资源中。