首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >file_get_contents不支持facebook的图形api

file_get_contents不支持facebook的图形api
EN

Stack Overflow用户
提问于 2012-06-03 00:17:02
回答 4查看 10.3K关注 0票数 3

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"

代码语言:javascript
复制
$response = file_get_contents($token_url);

但是,如果您将上面的URL复制并粘贴到浏览器地址栏中,它就可以正常工作!并返回:

代码语言:javascript
复制
access_token=AAADWBzZAyUvMBAL2Th6CRtxh2Up5soTCK8N4HJcy0ZBhQgJPxtZArKbuITISMoGLDxNiyeNW4GUZCBvJPeBTH6mx4v83ueUIAAYQJA1WrAZDZD&expires=5112501

但他的类似URL (针对不同的用户)也有效:

代码语言:javascript
复制
$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

请帮帮忙,谢谢

EN

回答 4

Stack Overflow用户

发布于 2012-06-03 02:39:31

作为file_get_contents的替代方案,您是否考虑过使用cURL。我使用curl处理了很多请求,结果很好,如果失败了,它不会暴露你的客户端秘密。

请参阅http://php.net/manual/en/book.curl.php

此代码片段是我的所有应用程序获取应用程序访问令牌的标准。可用于所有api调用。

代码语言:javascript
复制
$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;
};
票数 3
EN

Stack Overflow用户

发布于 2012-10-29 08:47:15

最终找到了答案,有同样的issue..the问题,很可能是因为他们给你的facebook代码在参数之间有空格。如果你只是从Facebook复制和粘贴,你会得到一个HTTP/1.1400Bad Request错误。将所有参数放在一行中,删除所有空格,这样就可以解决这个问题。对我很管用。我知道这是一个老帖子,但是如果你有这个问题,请让我知道它是否适用于你!

票数 2
EN

Stack Overflow用户

发布于 2013-09-12 21:44:45

用于调试:

获取$token_url中的实际字符串并将其粘贴到浏览器地址字段中,看看会发生什么情况。

您将得到一些json错误代码。

对我来说,是我的令牌过期了。开始新的请求运行良好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10863959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档