所以我将这个json文件(json.json)存储在服务器上,每次调用这个php类时,我想用新的json数据覆盖它(' refresh_token'对象是准确的) :
$file = file_get_contents('/var/json.json');
$json = json_decode($file);
**$REFRESH_TOKEN** = $json->refresh_token;
$json = file_get_contents("https://xxxxxxxxxxx&refresh_token=**$REFRESH_TOKEN**");
$obj = json_decode($json, true);
$AccessToken = $obj->access_token;
$RefreshToken = $obj->refresh_token;
**file_put_contents('/var/json.json', json_encode($RefreshToken));**
json文件如下所示:
{"token_type":"bearer",
"expires_in":3600,
"scope":"xxxxxxx",
"access_token":"xxxx",
**"refresh_token":"xxxxx",**
"user_id":"xxxxxx"}
每当我第二次打电话给我时,我都会反复收到错误:Trying to get property of non-object in
。我在第一次调用后查看了json文件,发现它没有包含任何内容。这表明file_put_contents('/var/json.json', json_encode($RefreshToken))
无效。
任何人都可以告诉我这里我做错了什么吗?
答案 0 :(得分:1)
确保您有权在该文件上书写。将文件权限更改为777。
答案 1 :(得分:0)
从您的代码中,您尝试做的事情并不明显。我想这是以下内容:
这将如下工作:
$REFRESHTOKEN = $_GET['REFRESH_TOKEN']; // Calculate refresh token
$json = json_decode(file_get_contents('/var/json.json')); // fetch json object from file
$json->refresh_token = $REFRESHTOKEN // modify refresh token
file_put_contents('/var/json.json', json_encode($json)); // write json object back to file
您正在做的是仅将刷新令牌写入文件,而不是整个对象。这就是为什么在第二次尝试时,对象不存在......
答案 2 :(得分:0)
如果将json_decode
的第二个参数设置为true
,则会得到关联数组而不是对象。
json_decode
的文档:http://php.net//manual/en/function.json-decode.php