如何在Firebase功能中获取提供者访问令牌?

时间:2017-08-24 10:02:00

标签: javascript firebase firebase-authentication google-cloud-functions

我打算在身份验证用户创建时编写Firebase功能。我的目标是获取Facebook用户页面的长实时访问令牌。

为此,我需要Firebase功能中的用户访问令牌。试过下面..,

exports.saveLongLiveToken = functions.auth.user().onCreate(event => {
  console.log(event.providerData)
})

我虽然providerData将拥有有关Facebook凭据的信息,但不是我只是未定义。

注意:事件中,我在下面

{ data: 
   { displayName: 'Rob',
     email: 'xxx@xyz.com',
     metadata: 
      { createdAt: 2017-08-23T18:58:34.000Z,
        lastSignedInAt: 2017-08-23T18:58:34.000Z },
     photoURL: 'http...',
     providerData: [ [Object] ],
     uid: 'xfff...' },
  eventId: 'xxx',
  eventType: 'providers/firebase.auth/eventTypes/user.create',
  notSupported: {},
  resource: 'projects/fiobot-4fa94',
  timestamp: '2017-08-23T18:58:34.571Z',
  params: {} }

1 个答案:

答案 0 :(得分:2)

如果您使用Firebase Auth signInWithPopup / Redirect登录,则只能在登录后获取访问令牌。 Firebase Auth不会为您存储它(它也不存储Facebook刷新令牌)。您需要将其保存在数据库中,只有指定的用户才能访问它,并且通过Firebase功能管理SDK可以允许您访问它。如果您认为Firebase Auth应为提供商管理OAuth令牌,请通过Firebase支持渠道提交请求。 如果这对您的应用功能至关重要,您可以使用Facebook API登录用户并获取Facebook访问令牌并使用firebase.auth().signInWithCredential(firebase.auth.FacebookAuthProvider.credential(fbAccessToken))登录 Facebook客户端API可以为您管理OAuth令牌。您还可以使用后端OAuth node.js库,在需要时通过Firebase函数刷新Facebook令牌。您需要获得Facebook刷新令牌。