javascript - 将 ajax 调用的响应存储在 ember 中

标签 javascript ajax facebook ember.js

我是 ember 和 JavaScript 的新手。我设计了一个 ember 应用程序并将 Facebook 登录集成在其中。现在我必须将 Facebook 登录的 access_token 发送到应用程序后端(发布请求)并获取由后端(django)。我还需要存储新 token 以供将来调用后端。

发布请求响应

{
  "token": "b0fb466a6eac3ad87",
  "signup_done": true
}

Controller

import Ember from 'ember'; 
/* global FB */

export default Ember.Controller.extend({ 
getLoginStatus: function() {
  return new Ember.RSVP.Promise(function(resolve, reject) {
    FB.getLoginStatus(function(response) {
      if (response.status) {
        resolve(response.status);
      } else {
        reject();
      }
    });
  });
}, 
getAccessToken: function() {
  return new Ember.RSVP.Promise(function(resolve, reject) {
    FB.login(function(response) {
      if (response.authResponse) {
        console.log("accesstoken>>>>>>>>>"+response.authResponse.accessToken);
        resolve(response.authResponse.accessToken);
      } else {
        reject(response);
      }
    }, { scope: 'email,user_photos,user_friends' });
  });
},

 authenticate: function(accessToken) {
    console.log("accesstoken<<<<<<<<<<<             "+accessToken);
      Ember.$.ajax({
        url: 'http://example.com/api/',
        data:{
          access_token: accessToken,
          provider:'facebook'
        },
        type: 'post',
        success:function(data){
          console.log('data>>>'+this.get(data));
        }
      });
  },

 testAPI:function() {
    console.log('Welcome!  Fetching your information.... ');
    FB.api('/me', function(response) {
      console.log('Successful login for: ' + response.name);
    });
},



   actions: {
    fblogin: function() {
      var self = this;
      this.getLoginStatus().then(function() {
        self.getAccessToken().then(function(accessToken) {
          self.authenticate(accesstoken)
            self.testAPI();
            console.log('success')
          }, function(reason) {
            console.log('failure', reason);
          });
        });

    },
    carousel:function (result) {
          var photos=result.photoThumbs
          this.set('model.photos',photos)
          console.log(this.get("model.results"));
          },
  }

});

我能够对后端服务器进行 ajax 调用并获取响应。但不确定如何保存新 token 以供将来使用。

最佳答案

如果我理解你的问题正确,那么你可以使用 localStorage 或 sessionStorage 保存 token 以供将来使用。

$.ajax({
  url:url,
  data:data,
  success: function(res) {
    localStorage.token = res.token;
    sessionStorage.token = res.token;
  }
});

关于javascript - 将 ajax 调用的响应存储在 ember 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870053/

相关文章:

java - Visual Studio 2013 企业版 : Oracle Java SDK A more recent version of this software is required

javascript - 在 Rails 中使用 Ajax 进行投票

javascript - 使用 JS 和/或 HTML5 从本地文件系统读取文件

javascript - 带有下拉选择器的 jquery 选项卡式选择器,下拉菜单与选项卡开关不匹配

asp.net - 如何将 Textboxes 值传递给 Ajax.ActionLink?

android - Cordova Facebook Connect 在初始化时失败

javascript - 如何使用 Jquery/Ajax 处理无限滚动的页码?

javascript - 多次爆炸和 foreach,同时在 txt 文件 html/php/ajax 中搜索 `input` 值

ios - 如何测试 facebook 好友标记

android - 以下类无法实例化 : – com. facebook.widget.LoginButton