流星yammer身份验证

时间:2014-07-30 06:52:08

标签: meteor

如何在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"

1 个答案:

答案 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