getJSON和OAuth令牌

时间:2014-06-19 16:16:00

标签: javascript php jquery oauth getjson

我正在编写一个使用jQuery(getJSON)从PHP页面中提取值的脚本。 PHP页面使用正确的键和值正确显示编码对象,并从$_SESSION变量中检索值。但是,当javascript尝试访问此页面时,将检索该对象,但只有密钥完好无损且值将替换为null。从null检索返回$_SESSION的值,而手动添加的任何值都正确返回。这是可以避免/修复的吗?将访问令牌存储在cookie而不是会话中会更有意义吗?

代码示例:

<?php
  session_start();

  $token = $_SESSION['token'] -> access_token;

  $information = [
     "media_token" => $token,
     "test" => "testing"
     ]; 

  print json_encode($information); //when page is directly accessed, 
                                   //returns correct information
?>

使用Javascript:

$.getJSON('oauth.php', function (data){
            console.log(data); // media_token: null
                               // test: testing
    });

2 个答案:

答案 0 :(得分:0)

试试此代码,它可以帮助您

<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
$(document).ready(function() {
$.getJSON('oauth.php', function (data){
            console.log(data); // media_token: null
                               // test: testing
    });
});
</script>
</head>
<body>
<div class="title">
    <h2>PRESS</h2>
    <p>hello</p>
</div>
</body>
</html>

oauth.php文件

 session_start();
  $_SESSION['token']="Hello1212";
  $token = $_SESSION['token'];// -> access_token;

  $information = array(
    "media_token" => $token,
    "test" => "testing"
);

  print json_encode($information); //when page is directly accessed, 
                                   //returns correct information

答案 1 :(得分:0)

原来问题是我使用非www页面访问包含JS的页面,而添加www修复了问题。不确定原因,但如果页面可以访问$ _SESSION,则显然会发生变化。如果有人能够解释为什么这种情况会很棒,那就欢呼吧。