file_get_contents无法使用以下url (无法打开流: HTTP请求失败!)HTTP/1.0 400错误请求)
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=235326466577139&redirect_uri=http%3A%2F%2Fapps.facebook.com%2Flikeablephotos%2F&client_secret=CLIENT_SECRET&code=AQDFZbjpAUda8c_gz4wDDuBOVrsn0dApz3s8UA--7hFQIi1wb70-tDE56xXcCtDq-hV5UWzR5YEw_ozuGT24FLfvh9KnqHZ3xdn46P_KxYCf3DHJQA3AAu2ICHBqTk1-6fHTsl6FbagKz83H6dn15kkbKksajA4KcVIoPse5JbuBLlh6V5L1ANe8fzR94iH_SMU";
$response = file_get_contents($token_url);但是,如果您将上面的URL复制并粘贴到浏览器地址栏中,它就可以正常工作!并返回:
access_token=AAADWBzZAyUvMBAL2Th6CRtxh2Up5soTCK8N4HJcy0ZBhQgJPxtZArKbuITISMoGLDxNiyeNW4GUZCBvJPeBTH6mx4v83ueUIAAYQJA1WrAZDZD&expires=5112501但他的类似URL (针对不同的用户)也有效:
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=235326466577139&redirect_uri=http%3A%2F%2Fapps.facebook.com%2Flikeablephotos%2F&client_secret=CLIENT_SECRET&code=AQC2kTEV96-1Cki2oYUhyzjH6yFe6AJRd1Q3G8fbUXW-IsLJUlactzSwCvGVBK6jh1tL-t7v6dOWJZzbkSYhk0n2z6BHQcpljWAdoXFGB5zLC4FgW8fmxT6hwdRIQOr2dZ95CD_q5yJuOUz_2DItUa3_FF9m2_TmFYGEbxPoiaF47YSTUuZp6g-8ffziJcKDAdo";使用file_get_contents时
请帮帮忙,谢谢
发布于 2012-06-03 02:39:31
作为file_get_contents的替代方案,您是否考虑过使用cURL。我使用curl处理了很多请求,结果很好,如果失败了,它不会暴露你的客户端秘密。
请参阅http://php.net/manual/en/book.curl.php
此代码片段是我的所有应用程序获取应用程序访问令牌的标准。可用于所有api调用。
$app_access_token = GetCH();
function GetCH(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
if(substr($url,0,8)=='https://'){
// The following ensures SSL always works. A little detail:
// SSL does two things at once:
// 1. it encrypts communication
// 2. it ensures the target party is who it claims to be.
// In short, if the following code is allowed, CURL won't check if the
// certificate is known and valid, however, it still encrypts communication.
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
}
$sendCH = curl_exec($ch);
curl_close($ch);
return $sendCH;
};发布于 2012-10-29 08:47:15
最终找到了答案,有同样的issue..the问题,很可能是因为他们给你的facebook代码在参数之间有空格。如果你只是从Facebook复制和粘贴,你会得到一个HTTP/1.1400Bad Request错误。将所有参数放在一行中,删除所有空格,这样就可以解决这个问题。对我很管用。我知道这是一个老帖子,但是如果你有这个问题,请让我知道它是否适用于你!
发布于 2013-09-12 21:44:45
用于调试:
获取$token_url中的实际字符串并将其粘贴到浏览器地址字段中,看看会发生什么情况。
您将得到一些json错误代码。
对我来说,是我的令牌过期了。开始新的请求运行良好。
https://stackoverflow.com/questions/10863959
复制相似问题