提供用于检索当前登录帐户的代码。我只是对这个例子有几个问题,因为我试图让它在Ember-CLI应用程序中运行。
SimpleAuth
正在示例中使用,但我不知道它来自哪里,因为我正在尝试import SimpleAuth from ...
但我不知道是什么文件从中导入。
此外,我想知道服务器的响应现在是否需要返回user_id以及access_token / refresh_token?
如果是这样,oauth是否兼容?
编辑:我当前的代码
// app/initializers/oauth-custom.js
import Ember from 'ember';
import OAuthCustomAuthenticator from 'front/authenticators/oauth-custom';
import Session from 'simple-auth/session';
export default {
name: 'oauth-custom',
before: 'simple-auth',
initialize: function(container) {
Session.reopen({
currentUser: function() {
var user_id = this.get('user_id');
if (!Ember.isEmpty(user_id)) {
return container.lookup('store:main').find('user', user_id);
}
}.property('user_id')
});
container.register(
'oauth-custom:oauth2-password-grant',
OAuthCustomAuthenticator
);
}
};
身份验证工作完美无缺,只是因为我没有看到任何虚构试图制作的电话/用户/ ID。
来自服务器的示例响应:
{
"access_token": "asdf",
"token_type": "bearer",
"expires": 1406082157,
"expires_in": 604800,
"refresh_token": "asdf",
"user_id": "1"
}
答案 0 :(得分:3)
SimpleAuth全局仅在库的浏览器分发中定义。当您使用ember-cli时,您可以导入单个组件,而不是通过全局访问它们(请参阅此示例:http://log.simplabs.com/post/90339547725/using-ember-simple-auth-with-ember-cli)。
例如得到你喜欢的会话:
import Session from 'simple-auth/session';
Session.reopen({
…
});
上面链接的示例要求服务器在响应中包含user_id
,该响应不符合OAuth 2.0规范,而是自定义。如果您希望/需要符合要求,您可以获得当前用户,例如通过GET /me
或者......一旦会话被认证,就像那样。