Firebase 인증 사용자 객체가 변경되면 함수를 트리거합니다.
더 살펴보기
이 코드 샘플이 포함된 자세한 문서는 다음을 참조하세요.
코드 샘플
C#
using CloudNative.CloudEvents;
using Google.Cloud.Functions.Framework;
using Google.Events.Protobuf.Firebase.Auth.V1;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
namespace FirebaseAuth;
public class Function : ICloudEventFunction<AuthEventData>
{
private readonly ILogger _logger;
public Function(ILogger<Function> logger) =>
_logger = logger;
public Task HandleAsync(CloudEvent cloudEvent, AuthEventData data, CancellationToken cancellationToken)
{
_logger.LogInformation("Function triggered by change to user: {uid}", data.Uid);
if (data.Metadata is UserMetadata metadata)
{
_logger.LogInformation("User created at: {created:s}", metadata.CreateTime.ToDateTimeOffset());
}
if (!string.IsNullOrEmpty(data.Email))
{
_logger.LogInformation("Email: {email}", data.Email);
}
// In this example, we don't need to perform any asynchronous operations, so the
// method doesn't need to be declared async.
return Task.CompletedTask;
}
}
Go
// Package firebase contains a Firestore Cloud Function.
package firebase
import (
"context"
"log"
"time"
)
// AuthEvent is the payload of a Firestore Auth event.
type AuthEvent struct {
Email string `json:"email"`
Metadata struct {
CreatedAt time.Time `json:"createdAt"`
} `json:"metadata"`
UID string `json:"uid"`
}
// HelloAuth is triggered by Firestore Auth events.
func HelloAuth(ctx context.Context, e AuthEvent) error {
log.Printf("Function triggered by creation or deletion of user: %q", e.UID)
log.Printf("Created at: %v", e.Metadata.CreatedAt)
if e.Email != "" {
log.Printf("Email: %q", e.Email)
}
return nil
}
Java
import com.google.cloud.functions.Context;
import com.google.cloud.functions.RawBackgroundFunction;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import java.util.logging.Logger;
public class FirebaseAuth implements RawBackgroundFunction {
private static final Logger logger = Logger.getLogger(FirebaseAuth.class.getName());
// Use GSON (https://github.com/google/gson) to parse JSON content.
private static final Gson gson = new Gson();
@Override
public void accept(String json, Context context) {
JsonObject body = gson.fromJson(json, JsonObject.class);
if (body != null && body.has("uid")) {
logger.info("Function triggered by change to user: " + body.get("uid").getAsString());
}
if (body != null && body.has("metadata")) {
JsonObject metadata = body.get("metadata").getAsJsonObject();
logger.info("Created at: " + metadata.get("createdAt").getAsString());
}
if (body != null && body.has("email")) {
logger.info("Email: " + body.get("email").getAsString());
}
}
}
Node.js
/**
* Background Function triggered by a change to a Firebase Auth user object.
*
* @param {!Object} event The Cloud Functions event.
*/
exports.helloAuth = event => {
try {
console.log(`Function triggered by change to user: ${event.uid}`);
console.log(`Created at: ${event.metadata.createdAt}`);
if (event.email) {
console.log(`Email: ${event.email}`);
}
} catch (err) {
console.error(err);
}
};
PHP
use Google\CloudFunctions\CloudEvent;
function firebaseAuth(CloudEvent $cloudevent)
{
$log = fopen(getenv('LOGGER_OUTPUT') ?: 'php://stderr', 'wb');
$data = $cloudevent->getData();
fwrite(
$log,
'Function triggered by change to user: ' . $data['uid'] . PHP_EOL
);
fwrite($log, 'Created at: ' . $data['metadata']['createTime'] . PHP_EOL);
if (isset($data['email'])) {
fwrite($log, 'Email: ' . $data['email'] . PHP_EOL);
}
}
Python
import json
def hello_auth(data, context):
""" Triggered by creation or deletion of a Firebase Auth user object.
Args:
data (dict): The event payload.
context (google.cloud.functions.Context): Metadata for the event.
"""
print('Function triggered by creation/deletion of user: %s' % data["uid"])
print('Created at: %s' % data["metadata"]["createdAt"])
if 'email' in data:
print('Email: %s' % data["email"])
Ruby
require "functions_framework"
# Triggered by creation or deletion of a Firebase Auth user object.
FunctionsFramework.cloud_event "hello_auth" do |event|
# Event-triggered Ruby functions receive a CloudEvents::Event::V1 object.
# See https://cloudevents.github.io/sdk-ruby/latest/CloudEvents/Event/V1.html
# The Firebase event payload can be obtained from the `data` field.
payload = event.data
logger.info "Function triggered by creation/deletion of user: #{payload['uid']}"
logger.info "Created at: #{payload['metadata']['createdAt']}"
logger.info "Email: #{payload['email']}" if payload.key? "email"
end
다음 단계
다른 Google Cloud 제품의 코드 샘플을 검색하고 필터링하려면 Google Cloud 샘플 브라우저를 참조하세요.