我正在使用Foursquare API,我需要向他们的服务器发出请求,以便以JSON格式接收访问令牌(https://developer.foursquare.com/overview/auth)。我如何使用PHP执行此操作?
我没有在网上找到任何明确的教程,这就是我在这里问的原因。我已经看到了一些与cURL有关的东西,我真的不明白,所以有什么简单的方法可以做到这一点吗?我在使用AJAX之前已经完成了它并且它非常自我解释,但它在PHP中看起来非常复杂,远远超过了它的外观:(
有人可以帮忙吗?感谢
答案 0 :(得分:1)
<?php
# url_get_contents function by Andy Langton: http://andylangton.co.uk/
function url_get_contents($url,$useragent='cURL',$headers=false,$follow_redirects=false,$debug=false) {
# initialise the CURL library
$ch = curl_init();
# specify the URL to be retrieved
curl_setopt($ch, CURLOPT_URL,$url);
# we want to get the contents of the URL and store it in a variable
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
# specify the useragent: this is a required courtesy to site owners
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
# ignore SSL errors
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
# return headers as requested
if ($headers==true){
curl_setopt($ch, CURLOPT_HEADER,1);
}
# only return headers
if ($headers=='headers only') {
curl_setopt($ch, CURLOPT_NOBODY ,1);
}
# follow redirects - note this is disabled by default in most PHP installs from 4.4.4 up
if ($follow_redirects==true) {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
}
# if debugging, return an array with CURL's debug info and the URL contents
if ($debug==true) {
$result['contents']=curl_exec($ch);
$result['info']=curl_getinfo($ch);
}
# otherwise just return the contents as a variable
else $result=curl_exec($ch);
# free resources
curl_close($ch);
# send back the data
return $result;
}
?>
答案 1 :(得分:1)
好了,按照您提供的链接,试试这个:
重定向链接中的脚本(YOUR_REGISTERED_REDIRECT_URI)
if(isset($_GET['code']))
{
$code = $_GET['code'];
$url = "https://foursquare.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=$code";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST);
$json = curl_exec($ch);
var_dump($json);
}
注意:在阅读您提供的教程后,我没有看到任何对POST请求的引用,只有请求,所以您可以尝试这个(而不是cURL)
$json = file_get_contents($url);
如果这是一个简单的GET请求,那么file_get_contents可能会起作用。