使用Ember 2.x从Auth0 / facebook JSON响应中获取数据

时间:2017-05-13 12:44:15

标签: json ember.js auth0

我有来自Auth0设置的入门种子,它有效,并提供以下(片段)json字符串:

          {
"name": "Silvio Langereis",
 "given_name": "Silvio",
 "family_name": "Langereis",
 "gender": "male",
...

在我的main-profile.hbs中,我有以下来自Auth0的预设代码,显示相应的项目:

 <h3>{{profile.name}}</h3>
<h4>{{profile.nickname}}</h4>

然后显示完整的json字符串profile.body

当我想要显示{{profile.given_name}}时,什么都没有显示出来。我对此感到有些困惑。 profile.name就在json的正上方,显示得很好。 任何人都知道这里发生了什么?我们的想法是在表格中填写已经获得的数据,以便用户可以在首次登录时完成并提交(从而制作数据库记录)。

这样可以正常工作,填写文本字段:

    <div class="form-group has-feedback {{if item.isValidUserName 'has-success'}}">
        <label class="col-sm-2 control-label">Gebruikersnaam*</label>
        <div class="col-sm-7 col-sm-offset-1">
            {{input type="text" value=profile.name class="form-control"}}
            {{#if item.isValidUserName}}<span class="glyphicon glyphicon-ok form-control-feedback"></span>{{/if}}
        </div>
    </div>

这不是:

<div class="form-group">
    <label class="col-sm-2 control-label">Voornaam*</label>
    <div class="col-sm-7 col-sm-offset-1">
        {{input type="text" value=profile.given_name class="form-control"}}
        {{#if item.isValidFirstName}}<span class="glyphicon glyphicon-ok form-control-feedback"></span>{{/if}}
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

我是个傻瓜!

在routes / user-profile.js中,json被解析并添加到localstorage对象&#39; profile&#39;。在那里,我必须声明我想要放入哪些值。

路由/用户profile.js:

import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend({
  model() {
    const profile = localStorage.getItem('profile');
    const profileObject = JSON.parse(profile);
    const model = {
      name: profileObject.name,
      nickname: profileObject.nickname,
      pictureUrl: profileObject.picture,
      email: profileObject.email,
      body: profile.trim()
    };
    return model;
  }
});

添加以下行,修复问题:given_name: profileObject.given_name,

冲洗并重复所需的值。