How to get the uid of the authenticated Firebase user in a Cloud Functions storage trigger

做~自己de王妃 提交于 2020-05-14 10:25:13

问题


Background: I'm using Firebase Cloud Functions, the new Firestore Database, and storage bucket with an Android client.

What I want to accomplish: When a user uploads a picture to a storage bucket, I want to use cloud functions to get the file path/link to the image location in the storage bucket and store this string as a new document under a new collection called "pictures" under the currently logged in user's document in Firestore.

That way, I can see the images each user has uploaded directly in Firestore and it makes it easier to pull a specific user's images down to the Android client.

What I've completed so far: 1. When a user logs in for the first time, it creates a user doc in the new Firestore Database. 2. A logged in user can upload an image to a storage bucket. 3. Using Firebase Cloud Functions, I managed to get the file path/link of the storage location as follows:

/**
 * When a user selects a profile picture on their device during onboarding,
 * the image is sent to Firebase Storage from a function running on their device. 
 * The cloud function below returns the file path of the newly uploaded image. 
 */
exports.getImageStorageLocationWhenUploaded = functions.storage.object().onFinalize((object) => {
  const filePath = object.name; // File path in the bucket.
  const contentType = object.contentType; // File content type.

  // Exit if this is triggered on a file that is not an image.
  if (!contentType.startsWith('image/')) {
    console.log('This is not an image.');
    return null;
  }
console.log(filePath);
});

Question: How do I get the currently logged in user and store this user's uploaded image file path/link as a new doc under this logged in user's documents within the Firestore database using Cloud Functions?


回答1:


Currently, with Cloud Storage triggers, you don't have access to authenticated user information. To work around that, you'll have to do something like embed the uid in the path of the file, or add the uid as metadata in the file upload.



来源:https://stackoverflow.com/questions/51178260/how-to-get-the-uid-of-the-authenticated-firebase-user-in-a-cloud-functions-stora

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!