Uma instância da classe User representa um usuário. As instâncias de usuário são exclusivas e comparáveis. Se forem iguais, duas instâncias representarão o mesmo usuário.
O aplicativo pode acessar a instância de User do usuário atual chamando a função users.get_current_user().
Use a função users.get_current_user(), independentemente da opção de autenticação usada pelo app.
Uma instância de User também pode ser criada com base em um endereço de e-mail:
user = users.User("Albert.Johnson@example.com")
Ou, se você tiver um federated_identity
, poderá usá-lo para criar uma instância User:
user = users.User(federated_identity="http://example.com/id/ajohnson")
Se o construtor User for chamado com um endereço de e-mail que não corresponde a uma conta do Google válida, o objeto será criado, mas não corresponderá a uma conta do Google real. Esse será o caso mesmo se alguém criar uma conta do Google com o determinado endereço de e-mail depois que o objeto for armazenado. Um valor User com um endereço de e-mail que não representa uma Conta do Google no momento em que for criado jamais corresponderá a um valor User que representa um usuário real.
Durante a execução no servidor da Web de desenvolvimento, presume-se que todos os objetos User representem Contas do Google válidas no armazenamento de dados (simulado).
O objeto User para um usuário válido pode fornecer um valor de código exclusivo para o usuário que continua sendo o mesmo caso ele altere o endereço de e-mail. O método user_id()
retorna esse ID, um valor str
.
O objeto User tem a mesma forma, independentemente do método de autenticação usado pelo app.
Como usar valores de User com o Datastore
O código do usuário é estável. Você pode usá-lo em um nome de chave ou como uma propriedade de string. Por isso, ao usar valores de usuário, armazene o código do usuário (e talvez o endereço de e-mail visto pela última vez para se comunicar com o usuário por e-mail). Veja no exemplo abaixo como comparar o usuário atual com um código do usuário:
Recomendamos que você não armazene um UserProperty
, porque ele inclui o endereço de e-mail junto com o ID exclusivo do usuário. Se um usuário alterar o endereço de e-mail e você comparar o User
antigo
armazenado com o novo valor de User
, eles não serão correspondentes. Em vez disso, avalie a possibilidade de usar o valor do ID do usuário de User
como o identificador exclusivo estável do usuário.