我正在开发一个网页,我必须从API(使用PHP)获取数据。验证工作正常,用户可以登录。要保存访问令牌,我在php中使用函数setcookie()。但是一段时间后数据消失了,我收到了以下警告:
Warning: file_get_contents(https://...@me): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in C:\wamp\www\main.php on line 40
这些是:
function getUser($access_token){
$url = "https://jawbone.com/nudge/api/v.1.0/users/@me";
$opts = (array(
'http'=>array(
'method'=>"GET",
'header'=>"Authorization: Bearer {$access_token}\r\n"
)
));
$context = stream_context_create($opts);
$response = file_get_contents($url, false, $context); //
$user = json_decode($response, true);
return $user['data'];
}
实际上它非常奇怪,因为当我删除访问令牌cookie然后再次登录(并进行身份验证)时它会起作用...我根本不明白为什么会这样。
设置cookie(过期时间为31536000):
if (!isset($_COOKIE['access_token'])) {
setcookie('access_token', $data, time() + ($json['expires_in']));
}
你能告诉我我做错了吗?
答案 0 :(得分:0)
检查您的Cookie到期日期,即使该令牌可能在您的方面有效,该Cookie可能会提前到期。
答案 1 :(得分:0)
也许有点分手。从最简单的任务开始,让它工作。所以,假设你需要一个api调用,让这个调用工作。如果有效,请继续下一步。
如果api调用需要一个秘密令牌,我可以想象你不想只是让它给任何用户存储它作为cookie。
下一步是身份验证。如果你不仅是PHP的新手,而是一般的Web应用程序,我会从一些不那么具有挑战性的东西开始。
但是我们假设你很快就会掌握它,下一步(永远不会是最后一步)可能是一个安全决定:用户是否需要进行api调用,或者我可以为用户执行此操作一旦用户被授权,执行api呼叫服务器端?