2017-08-10 30 views
8

Đã dành một chút thời gian tìm kiếm giải pháp cho vấn đề đơn giản nhưng ... Làm cách nào tôi có thể nhận chi tiết người dùng hiện tại bên trong chức năng đám mây (khi không sử dụng trình kích hoạt hàm.auth)? Tôi chắc chắn phải có một giải pháp đơn giản cho việc này. (Tôi hy vọng)Chức năng đám mây cho Firebase - Nhận id người dùng hiện tại

Cảm ơn bạn đã trả lời ... Chỉ cần thực hiện điều đó nhưng làm cách nào tôi nhận được/người dùng/uid từ DB Firebase trong sự kiện kích hoạt bộ nhớ? ví dụ.

exports.addUploadInfoToDatabase = functions.storage.object().onChange(event => { 
    console.log("firebase storage has been changed"); 
    // need to find the uid in here somehow 
    admin.database().ref(`/user/uid`).push({testKey:"testData"}); 
}) 

Applogies nếu tôi đã bỏ lỡ điểm trong câu trả lời của bạn.

Thanks ...

+0

Xin chào, chào mừng bạn đến với SO! Vui lòng cho biết những gì bạn đã thử. Câu hỏi của bạn, vì hiện tại có thể sẽ không nhận được câu trả lời hay và có thể bị đóng. Vui lòng [tham quan] (https://stackoverflow.com/tour) và đọc [cách hỏi] (https://stackoverflow.com/help/how-to-ask) và [cách tạo tối thiểu, có thể xác minh được ví dụ] (https://stackoverflow.com/help/mcve) để có kết quả tốt hơn khi sử dụng trang web này. – vatavale

+0

Không rõ câu trả lời cho câu hỏi được gắn cờ như thế nào khi địa chỉ trùng lặp giải quyết câu hỏi của OP. –

Trả lời

3

Trước tiên, bạn có thể có được hiện tại người dùng đăng nhập bằng cách gọi tokenId getIdToken() trên tài khoản: https://firebase.google.com/docs/reference/js/firebase.User#getIdToken

firebase.auth().currentUser.getIdToken(true) 
.then(function (token) { 
    // You got the user token 
}) 
.catch(function (err) { 
    console.error(err); 
}); 

Sau đó gửi nó đến chức năng điện toán đám mây của bạn.

Sau đó, trong chức năng điện toán đám mây của bạn, bạn có thể sử dụng: https://firebase.google.com/docs/auth/admin/verify-id-tokens

Ví dụ:

admin.auth().verifyIdToken(idToken) 
    .then(function(decodedToken) { 
    var uid = decodedToken.uid; 
    // ... 
    }).catch(function(error) { 
    // Handle error 
    }); 

Các tài liệu cho decodedToken là ở đây: https://firebase.google.com/docs/reference/admin/node/admin.auth.DecodedIdToken#uid

DecodedIdToken chứa uid của người dùng, sau đó bạn có thể nhận được người dùng bằng cách gọi điện thoại này: https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#getUser

Trả về UserRecord https://firebase.google.com/docs/reference/admin/node/admin.auth.UserRecord

+0

Cảm ơn bạn đã trả lời ... "Trước tiên, bạn có thể gửi người dùng đã đăng nhập hiện tại tokenId từ máy khách đến Chức năng đám mây của bạn" .... Bạn có nghĩa là chuyển giá trị cho chức năng đám mây không? Tôi không thể tìm thấy bất kỳ tài liệu nào để đạt được điều đó ... –

+0

Đã thêm ví dụ Javascript để nhận mã thông báo người dùng trong ứng dụng khách. – Kim

+0

Làm cách nào để bạn truy cập vào 'firebase.auth(). CurrentUser'? Tôi có 'firebase không được định nghĩa'. Nếu bạn đã có một 'currentUser' tại sao không trực tiếp nhận được' .uid? – Francescu

Các vấn đề liên quan