【问题标题】:How to get provider access token in Firebase functions?如何在 Firebase 函数中获取提供者访问令牌?
【发布时间】:2018-02-02 03:54:51
【问题描述】:

我打算在创建身份验证用户时编写 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: {} }

【问题讨论】:

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


    【解决方案1】:

    如果您使用 Firebase Auth signInWithPopup/Redirect 登录,您将只能在登录后获得访问令牌。 Firebase Auth 不会为您存储它(它也不会存储 Facebook 刷新令牌)。您需要将其保存在数据库中,只有指定的用户可以访问它,并且通过 Firebase 函数的 Admin 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 刷新令牌。

    【讨论】:

    • 我唯一的问题是如何在我的 firebase cloud nodejs 函数中获取访问令牌,感谢您的回答,我会提出支持票。
    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2018-09-30
    • 2019-01-23
    • 2021-12-18
    • 2017-12-13
    • 2020-06-08
    相关资源
    最近更新 更多