我正在处理一个网页,我必须从 API(使用 PHP)获取数据。身份验证工作正常,用户可以登录。为了保存访问 token ,我在 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'];
}
这实际上很奇怪,因为当我删除访问 token cookie 然后再次登录(并进行身份验证)时它会起作用......我只是不明白为什么会这样。
设置cookie(过期时间为31536000):
if (!isset($_COOKIE['access_token'])) {
setcookie('access_token', $data, time() + ($json['expires_in']));
}
你能告诉我我做错了什么吗?
最佳答案
检查您的 cookie 的到期日期,即使 token 在您端可能有效,cookie 也可能提前到期。
关于php - file_get_contents(https ://. ..@me) : failed to open stream: HTTP request failed! HTTP/1.1 401 未经授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28178163/