如何在Yammer中使用自定义yammer身份验证?
流星似乎做了基本的事情,但任何并发症都会消失。到目前为止,我的代码如下。我不知道Meteor如何将当前用户ID设置为从REST调用返回的变量。
客户端:
console.log "auth running"
tokenMatch = window.location.hash.match(/access_token=([a-zA-Z0-9]+)/)
if tokenMatch
authToken = tokenMatch[1];
console.log "auth token", authToken
Meteor.loginWithToken(authToken);
Meteor.call 'yammerAuth', authToken, (err, result) ->
console.log "data", result, err
Meteor.call 'hello', (err,data) ->
console.log data
console.log "client"
服务器:
Meteor.methods
yammerAuth: (authToken) ->
console.log "yammerAuth", authToken
result = Meteor.http.call "GET", 'https://www.yammer.com/api/v1/users/current.json',
headers:
Authorization: 'Bearer ' + authToken
data = result.data
console.log "login", data
Accounts.createUser
username: data.id
email: "blah"
password: "blah"
profile: data
return result
hello: ->
console.log "hello"
"hello"
答案 0 :(得分:1)
服务器:
Accounts.registerLoginHandler (loginRequest) ->
authToken = loginRequest.authToken
return unless authToken
result = Meteor.http.call "GET", 'https://www.yammer.com/api/v1/users/current.json',
headers:
Authorization: 'Bearer ' + authToken
data = result.data
# console.log "login", data
serviceData =
id: data.id
accessToken: authToken
email: data.name + "@microsoft.com"
options =
profile:
name: data.full_name
network: data.network_name
pic: data.mugshot_url
return if data.network_name != "Microsoft" # Only microsoft users allowed
console.log serviceData, options
user = Accounts.updateOrCreateUserFromExternalService('yammer', serviceData, options)
# console.log "user", user
return userId:user.userId
客户端:
tokenMatch = window.location.hash.match(/access_token=([a-zA-Z0-9]+)/)
if tokenMatch
authToken = tokenMatch[1];
console.log "auth token", authToken
Accounts.callLoginMethod
methodArguments: [{authToken:authToken}]
window.location.hash = "";
登录按钮
a class="login-btn" href="https://www.yammer.com/dialog/oauth?client_id=[client_id]&redirect_uri=[uri]&response_type=token"></a