我试图在我的IOS应用程序中使用Google端点(Java),我不想使用Oauth2.0,因为它使用户强制拥有google帐户,这对应用程序是有害的。如何使用基本身份验证,如(用户名和密码)与谷歌端点。在用户登录后,如何通过服务器和客户端应用程序之间共享身份验证令牌来授权每个请求。
发布于 2015-11-11 10:45:27
服务器端非常简单:
@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发送登录请求。我对客户端帮助太大了,因为我不知道目标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');
}
});
};
关于令牌,有许多选择。您可以生成一些字符串并在成功登录到客户端时返回它,并将其保存到带有用户对象的数据存储中。或者您可以连接用户名:密码和编码字符串与base64,并使用结果字符串作为auth_token。在最后一种情况下,您不需要将其保存到数据存储。
https://stackoverflow.com/questions/33635303
复制相似问题