如何在具有 Google Cloud EndPoints(java) 的 Android/IOS 应用程序中使用基本身份验证

how to use basic authentication in Android/IOS app with Google Cloud EndPoints(java)

我正在尝试为我的 IOS 应用程序使用 Google 端点(Java),我不想使用 Oauth2.0,因为它让用户拥有 google 强制开户,不利于申请。如何使用带有 Google 端点的基本身份验证(如(用户名和密码))。以及用户登录后,如何通过在服务器和客户端应用程序之间共享身份验证令牌来基本上授权每个请求。

服务器端非常简单:

@Entity
public class User {

     @Id private String username;
     private String password;
     /*getters setters ommited*/
}

@Api(name = "userapi", version = "v1", description = "userapi")
public class UserService {

     static{
         ObjectifyService.register( User.class );
     }

     @ApiMethod(name = "create")
     public User createUser(@Named("username") String username,     
                                    @Named("password") String password){
         User user = new User();
         user.setUsername(username);
         user.setPassword(password);
         ofy().save().entity(user);  
         return user;
    }

    @ApiMethod(name = "get")
    public User getUser(@Named("username") String username, 
                                  @Named("password") String password){
           User user = ofy().load().key(Key.create(User.class, 
                                                  username)).now(); 
           return user;
    }
}

注册请求发送给createUser方法,登录请求发送给getUser。 我不能在客户端帮助你太多,因为我不知道 Objective C。 下面的 Javascript 客户端示例,可能会给您一些提示:

var login = function() {
    message = {
        "username" : $scope.username,
        "password" : $scope.password

    };
    console.log(message);

    gapi.client.userapi.get(message).execute(function(user) {
        console.log(user);
        if (!user.code && user.password) {
             //successfully logged in
            console.log('successfully  logged in');

        }
    });

};

关于令牌有很多选择。如果成功登录到客户端,您可以生成一些字符串和 return 并将其保存到带有 User 对象的数据存储中。或者您可以连接 username:password 并使用 base64 编码字符串并将结果字符串用作 auth_token。在最后一种情况下,您不需要将其保存到数据存储区。