如何将保存到DOM的foursquare access_token作为链接提取,以便将其用于API调用?

时间:2011-06-25 03:53:31

标签: javascript html5 oauth foursquare ajax

基本上,如果我在Firebug中并查看网络对象,我会看到状态200

如果我单击JSON选项卡,我可以看到我的access_token,但是如何从那里提取它以便我可以用于API调用?

这是最新尝试的代码。

var jsonUrl = url +"&callback=?";
var access_token;

$("#getJSON").click(function() {
    $.getJSON(jsonUrl, { dataType: "JSONP" }, function(json){ 
        ...
        access_token = json.access_token;
        ...
    });
});

也尝试过:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'callback',
  url: url,
  success: function (json) {
    console.log(json.access_token);
  },
});

但是当我尝试提醒时(access_token);或运行foursquare api调用我得到以下错误

Resource interpreted as Script but transferred with MIME type application/json. 

Uncaught SyntaxError: Unexpected token : checkinsGET https://api.foursquare.com/v2/users/self/checkins?oauth_token=undefined&format=json 401 (Unauthorized)

我觉得它准备就绪并等着我来打电话,但是我怎么把它从Dom打印到我可以使用的var中呢?几个小时都在争吵,并且由于某种原因,我一直在尝试所有的研究技巧。感谢大家的帮助到目前为止,我真的希望能够通过这个!

1 个答案:

答案 0 :(得分:1)

浏览器本身实现了一个全局函数JSON.parse(),如果由于某些原因无效,你可以使用jQuery的parseJSON()函数。

这是它的工作原理。假设您的JSON对象具有以下格式:

{
    Status: "Success",
    Resource: {
        Name: "Person's Name",
        URL: "http://blahblahblah.com/extrastuffhere?querystuff=here"}}

然后你可以像这样使用JSON.parse()来访问“URL”元素:

var url = JSON.parse(json).Resource.URL;

(我对Foursquare不太熟悉,但它应该看起来很相似,你可以用console.log(json)查看它的结构。)

所以你的代码看起来像这样:

$("#getJSON").click(function() {
    $.getJSON(jsonUrl, { dataType: "JSONP" }, function(json){ 
        var parsed = JSON.parse(json);
        console.log(parsed);
        access_token = parsed.access_token;
    });
});

希望有所帮助!