我打算在身份验证用户创建时编写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: {} }
答案 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刷新令牌。