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}}})