【发布时间】:2015-02-03 06:01:34
【问题描述】:
我正在开发一个网页,我必须从 API(使用 PHP)获取数据。身份验证工作正常,用户可以登录。为了保存访问令牌,我在 php.ini 中使用了 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']));
}
你能告诉我我做错了什么吗?
【问题讨论】:
-
您的会话可能已过期?
-
我想过...但是访问令牌的有效期为 1 年
-
数据从哪里消失?查看您的 http 流量。
-
@symcbean 我是 PHP 新手:如何查看我的 http 流量?
-
使用数据包嗅探器(例如wireshark)或日志代理(例如proxomitron、firebug、iehttpheaders)