Facebook graph api 当我在客户端上执行Facebook.requestCredential时,如何在Meteor中获取凭据机密?

Facebook graph api 当我在客户端上执行Facebook.requestCredential时,如何在Meteor中获取凭据机密?,facebook-graph-api,meteor,facebook-oauth,Facebook Graph Api,Meteor,Facebook Oauth,我正在尝试实现一个登录/链接帐户系统,如本文所述。 (向下滚动至显示“显式关联的方法”的位置) 您过去可以通过以下方式获取用户的登录数据: data=Package.facebook.facebook.retrieveCredential(令牌).serviceData 现在它看起来是这样的retrieveCredential(令牌,秘密) 这是发生的地方 我一辈子都不知道如何在我呼叫后在服务器上获取凭据密码: Package.facebook.Facebook.requestCredentia

我正在尝试实现一个登录/链接帐户系统,如本文所述。
(向下滚动至显示“显式关联的方法”的位置)

您过去可以通过以下方式获取用户的登录数据:
data=Package.facebook.facebook.retrieveCredential(令牌).serviceData

现在它看起来是这样的
retrieveCredential(令牌,秘密)

这是发生的地方

我一辈子都不知道如何在我呼叫后在服务器上获取凭据密码:

Package.facebook.Facebook.requestCredential(
    requestPermissions: Accounts.ui._options.requestPermissions["facebook"]
, (token) ->
    Meteor.call "userAddOauthCredentials", token, Meteor.userId(), service, (err, resp) ->
        if err?
            Meteor.userError.throwError(err.reason)
)

现在你可以这样做(在客户机上):

然后在服务器上,您将需要该密码来访问用户的服务数据

userAddOAuthCredentials: (token, secret, service) ->
    services = Meteor.user().services
    serviceSearch = {}
    data = {}
    switch service
        when "facebook"
            if not services.facebook?
                data = Package.facebook.Facebook.retrieveCredential(token, secret)?.serviceData
                services.facebook = data
                serviceSearch = {"services.facebook.id": services.facebook.id}
            else
                throw new Meteor.Error(500, "You already have a linked Facebook account with email #{services.facebook.email}...")
    oldUser = Meteor.users.findOne(serviceSearch)
    if oldUser?
        throw new Meteor.Error(500, "Your #{service} account has already been assigned to another user.")

    Meteor.users.update(@userId, {$set: {services: services}})
    if data.email?
        if not _.contains(Meteor.user().emails, data.email)
            Meteor.users.update(@userId, {$push: {"emails": {address: data.email, verified: true}}})
这些函数将为您获取用户的服务数据,以便您可以链接多个帐户,或使用它们执行任何操作

userAddOAuthCredentials: (token, secret, service) ->
    services = Meteor.user().services
    serviceSearch = {}
    data = {}
    switch service
        when "facebook"
            if not services.facebook?
                data = Package.facebook.Facebook.retrieveCredential(token, secret)?.serviceData
                services.facebook = data
                serviceSearch = {"services.facebook.id": services.facebook.id}
            else
                throw new Meteor.Error(500, "You already have a linked Facebook account with email #{services.facebook.email}...")
    oldUser = Meteor.users.findOne(serviceSearch)
    if oldUser?
        throw new Meteor.Error(500, "Your #{service} account has already been assigned to another user.")

    Meteor.users.update(@userId, {$set: {services: services}})
    if data.email?
        if not _.contains(Meteor.user().emails, data.email)
            Meteor.users.update(@userId, {$push: {"emails": {address: data.email, verified: true}}})