android token php实现
实现 Android 与 PHP 的 Token 验证
Token 验证流程 Android 客户端向 PHP 服务器发起登录请求,服务器验证成功后生成 Token 并返回给客户端。客户端在后续请求中携带该 Token,服务器验证 Token 有效性后返回数据。
PHP 服务器端实现

生成 Token 的 PHP 代码示例:
<?php
function generateToken($userId) {
$secretKey = 'your_secret_key'; // 密钥
$header = base64_encode(json_encode(['alg' => 'HS256', 'typ' => 'JWT']));
$payload = base64_encode(json_encode(['user_id' => $userId, 'exp' => time() + 3600])); // 1小时过期
$signature = hash_hmac('sha256', "$header.$payload", $secretKey);
return "$header.$payload.$signature";
}
function validateToken($token) {
$secretKey = 'your_secret_key';
$parts = explode('.', $token);
if (count($parts) !== 3) return false;
$signature = hash_hmac('sha256', "$parts[0].$parts[1]", $secretKey);
if ($signature !== $parts[2]) return false;
$payload = json_decode(base64_decode($parts[1]), true);
if (time() > $payload['exp']) return false;
return $payload['user_id'];
}
?>
Android 客户端实现

使用 Retrofit 发送 Token 的示例:
// 定义接口
public interface ApiService {
@POST("login")
Call<LoginResponse> login(@Body LoginRequest request);
@GET("protected")
Call<DataResponse> getProtectedData(@Header("Authorization") String token);
}
// 登录并保存 Token
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://your-php-server.com/")
.build();
ApiService api = retrofit.create(ApiService.class);
api.login(new LoginRequest(username, password)).enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
if (response.isSuccessful()) {
String token = response.body().getToken();
// 保存 Token 到 SharedPreferences
}
}
});
// 使用 Token 请求受保护数据
String savedToken = getTokenFromPreferences(); // 从 SharedPreferences 获取
api.getProtectedData("Bearer " + savedToken).enqueue(...);
安全注意事项 Token 应通过 HTTPS 传输防止中间人攻击。服务器应设置合理的 Token 过期时间,客户端需要处理 Token 过期情况并重新登录。敏感操作应要求二次验证。
优化建议 可以考虑使用 Refresh Token 机制延长会话有效期。对于高安全需求场景,可以结合设备指纹等额外验证因素。服务器端应实现 Token 黑名单功能以支持主动注销。






