Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 当用户注册时,如何在Firebase的云函数中获取访问令牌?_Swift_Firebase_Github_Firebase Authentication_Google Cloud Functions - Fatal编程技术网

Swift 当用户注册时,如何在Firebase的云函数中获取访问令牌?

Swift 当用户注册时,如何在Firebase的云函数中获取访问令牌?,swift,firebase,github,firebase-authentication,google-cloud-functions,Swift,Firebase,Github,Firebase Authentication,Google Cloud Functions,当客户端登录Github时,我想触发一个云函数,从Github检索用户的配置文件数据,并将其存储在实时数据库中的/users/{uid}/profile 当新用户注册时,我可以使用以下方式触发我的云功能: exports.fetchProfile = functions.auth.user().onCreate(event => { // user = event.data // uid = user.uid // access_token = ??? // todo:

当客户端登录Github时,我想触发一个云函数,从Github检索用户的配置文件数据,并将其存储在实时数据库中的
/users/{uid}/profile

当新用户注册时,我可以使用以下方式触发我的云功能:

exports.fetchProfile = functions.auth.user().onCreate(event => {
  // user = event.data
  // uid = user.uid
  // access_token = ???

  // todo: request user profile from Github using access_token
  // todo: save profile in /users/{uid}/profile
});
但是,我如何获得用户发出Github配置文件请求所需的
访问\u令牌
?谢谢

我尝试过的:

  • 在客户端上,使用FirebaseAuth获取Github
    access\u令牌
  • 使用(1)中的
    access_令牌创建Firebase
    凭证
  • 使用(2)中的
    凭证登录,我在成功回调中获得一个
    FIRUser
    ,我可以从中获得
    uid
  • 我将
    {uid:access\u token}
    写入实时数据库中的队列,这反过来会触发执行概要文件检索的云函数

  • 所有这些只是为了获得用户的
    访问\u令牌
    ,我能做得更好吗?

    您不能使用用户创建触发器。 您有多种选择:

  • 注册后,从客户端获取访问令牌,并将其保存在实时数据库中指定用户可访问的位置下。然后可以为该位置设置云函数数据库触发器。触发后,您将获得访问令牌,并对GitHub进行API调用,获取数据,然后对其执行任何操作

  • 在客户端运行一切。由于您在客户端(浏览器)中注册后拥有访问令牌,因此对GitHub进行API调用,然后将配置文件数据保存在仅可由用户访问的数据库位置。如果需要运行其他管理操作,您可以添加一个云函数来触发对该位置的更改

  • 顺便说一句,Firebase Auth(4.0.0)现在返回其他用户数据。检查:
    您可以通过调用result.additionalUserInfo.profile或GitHub用户名:result.additionalUserInfo.username来获取附加数据。

    您不能使用用户创建触发器。 您有多种选择:

  • 注册后,从客户端获取访问令牌,并将其保存在实时数据库中指定用户可访问的位置下。然后可以为该位置设置云函数数据库触发器。触发后,您将获得访问令牌,并对GitHub进行API调用,获取数据,然后对其执行任何操作

  • 在客户端运行一切。由于您在客户端(浏览器)中注册后拥有访问令牌,因此对GitHub进行API调用,然后将配置文件数据保存在仅可由用户访问的数据库位置。如果需要运行其他管理操作,您可以添加一个云函数来触发对该位置的更改

  • 顺便说一句,Firebase Auth(4.0.0)现在返回其他用户数据。检查:
    您可以通过调用result.additionalUserInfo.profile或GitHub用户名:result.additionalUserInfo.username来获取附加数据。

    谢谢@bojeil,我已经在使用选项1,我可能会坚持使用它,因为选项2会导致不同客户端(Web、iOS和Android)上的代码重复。如果我能从用户创建触发器获得访问令牌,那就太好了。如果能从
    onCreate
    事件访问
    additionalUserInfo
    那就太棒了。毕竟,如果我们是以额外权限通过Facebook登录的,我们肯定希望将收集到的数据存储在某个地方。让它通过客户端而不是后端访问有什么意义?你可以间接地做到这一点-谢谢@bojeil,我已经在使用选项1,我可能会坚持使用它,因为选项2会导致不同客户端(Web、iOS和Android)上的代码重复。如果我能从用户创建触发器获得访问令牌,那就太好了。如果能从
    onCreate
    事件访问
    additionalUserInfo
    那就太棒了。毕竟,如果我们是以额外权限通过Facebook登录的,我们肯定希望将收集到的数据存储在某个地方。通过客户端而不是后端访问它有什么意义?你可以间接地做到这一点-