2011-01-26 27 views
5

Tôi đang tạo ứng dụng Google App Engine cho Java bằng cách sử dụng đăng nhập Liên kết.Google App Engine Java - Liên kết Đăng nhập, những gì cần giữ trong Datastore

Khi người dùng đã đăng nhập vào ứng dụng của tôi bằng cách sử dụng nhà cung cấp OAuth, tôi lấy lại đối tượng Người dùng [http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users /User.html].

Tôi muốn duy trì liên kết đến người dùng đó trong kho dữ liệu. Tuy nhiên, tôi sử dụng cái gì làm khóa duy nhất? Có phải getFederatedIdentity() hoặc getUserId() không? Hầu như không có bất kỳ JavaDoc nào. Rõ ràng khi một người dùng sau đó đăng nhập vào ứng dụng của tôi, tôi muốn lấy Object mà tôi đã lưu vào kho dữ liệu.

Tôi hiểu trường federatedIdentity mà tôi hiểu phải luôn được điền (tôi chỉ cho phép đăng nhập được liên kết). Tuy nhiên, nếu đó là trường để sử dụng để liên kết chi tiết của tôi với người dùng đã đăng nhập, thì Google sẽ để trống khi kiểm tra trên máy chủ cục bộ ... do đó sẽ không được sử dụng nhiều.

Trường getUserId là gì - Google đặt nó như thế nào? Nó sẽ đảm bảo giữ nguyên nếu danh tính liên kết của người dùng vẫn giữ nguyên?

Thanks a lot

Trả lời

2

Từ Users Java API Overview

Trong khi một người dùng được đăng nhập vào một ứng dụng, các ứng dụng có thể truy cập vào địa chỉ email của tài khoản hoặc nhận dạng OpenID cho mỗi yêu cầu người dùng thực hiện để ứng dụng . Ứng dụng cũng có thể truy cập ID người dùng xác định người dùng duy nhất, ngay cả khi người dùng thay đổi địa chỉ email cho tài khoản của mình.

âm thanh như getUserId() là lựa chọn tốt nhất.

+0

ok tôi sẽ thử điều đó - tôi chỉ tò mò muốn biết trường id người dùng đó được đặt như thế nào ... nhưng nếu Google hứa nó sẽ là duy nhất và nó sẽ giữ nguyên nếu đăng nhập được liên kết giống nhau hạnh phúc. cảm ơn. – planetjones

+0

có vẻ như được thiết lập (trong đối tượng) bởi User API –

0

Bạn không cần lưu trữ một trong hai - bạn có thể lưu trữ đối tượng Người dùng trực tiếp trong kho dữ liệu. Xem here để biết danh sách các loại đối tượng được hỗ trợ.

+0

ok tôi có thể làm điều đó, nhưng tôi muốn lưu trữ các thuộc tính bổ sung chống lại nó (vì vậy tôi có thể mở rộng nó không?) Và tôi vẫn cần truy xuất nó khi người dùng sau đó đăng nhập, vì vậy tôi vẫn cần truy xuất đối tượng User bằng một khóa ... trừ khi UserService.getUser trả về phiên bản trong kho dữ liệu nhưng điều đó không thể đúng nếu như người dùng thay đổi địa chỉ email của họ . Tôi đã thấy điều gì đó về việc sử dụng địa chỉ e-mail làm khóa duy nhất để liên kết các logon liên kết với dữ liệu được lưu trữ trong ứng dụng của riêng tôi ... nhưng điều đó có nghĩa là tôi cần yêu cầu quyền đối với địa chỉ e-mail của người dùng – planetjones

+0

@planetjones Tất cả điều đó là tốt - những gì tôi nói là bạn có thể lưu trữ nó như là một tài sản trên mô hình của bạn, thay vì chỉ lưu trữ ID người dùng. Nếu bạn cần một khóa duy nhất, không thay đổi cho tên khóa, hãy sử dụng user_id. –

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