发布
社区首页 >问答首页 >无法用卷曲请求连接到Facebook

无法用卷曲请求连接到Facebook
EN

Stack Overflow用户
提问于 2012-04-10 11:56:45
回答 1查看 3K关注 0票数 6

几周前,我创建了一个简单的Facebook应用程序。我是通过Facebook获得用户信息的,通过请求用户的许可。但上周它毫无意义地停止了工作,从那时起,我一直在寻找答案。

基本上,我以前使用file_get_contents从Facebook获取用户信息。但是,在它开始失败后,我尝试将它更改为cURL,但仍然无法工作。我尝试使用Facebook,甚至将代码调试为makeRequest方法,但在所有方法中都得到了相同的返回。

当向发出cURL请求时,请求将失败,错误号为7或28。它们都是无法连接到站点或获取超时的错误代码。

我的网站是一个共享主机,我已经尝试使用cURL获得其他网站,它的工作很好。但是,当我试图获得http://www.facebook.com时,cURL返回FALSE。

主机拥有SSL证书,启用了cURL等,并且在一段时间前运行良好。我已经阅读过有关这方面的各种线程和帖子,尝试过许多不同的cURL选项,但它们似乎都不起作用。

有什么想法吗?

index.php

代码语言:javascript
代码运行次数:0
复制
$auth_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($GLOBALS['canvas_page']) . "&scope=publish_stream,email";
$signed_request = $_POST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
    echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
    $_SESSION['oauth_token'] = $data['oauth_token'];
    $_SESSION['user_id'] = $data["user_id"];
    $user = new User($_SESSION['user_id'], $_SESSION['oauth_token']);

用户类

代码语言:javascript
代码运行次数:0
复制
function __construct($fid, $at) {
    $this->facebook = new Facebook(array(
                'appId' => "<APP_ID>",
                'secret' => "<FACEBOOK_SECRET_ID>",
            ));
    $this->fid = $fid;
    $this->token = $at;
    if ($data = $this->getGraph()) {
    ...
    }
}

public function getGraph() {
    $session = $this->facebook->getUser();
    if ($session) {
        try {
            $access_token = $this->facebook->getAccessToken();
            $attachment = array('access_token' => $access_token);
            //$result = $this->facebook->api('/' . $this->fid, 'GET', $attachment);
            $result = $this->facebook->api('/' . $this->fid, 'GET');
            return $result;
        } catch (FacebookApiException $e) {
            return false;
        }
    }
}

备注:

  • 在检查了Facebook方法之后,我意识到我不需要发送访问令牌,因为如果访问令牌不在$params中,那么它就会设置它。
  • 则转到sdk中的makeRequest()方法,并从curl_exec.

返回false。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-11 06:38:04

显然,这与Facebook的循环DNS结构有关。我想Facebook的一个地址失败了,服务器仍然试图连接到那个地址,因为DNS缓存。

主机提供商必须清除它们的DNS缓存以解决问题。

有关循环DNS的更多信息,您可以访问http://en.wikipedia.org/wiki/Round-robin_DNS

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

https://stackoverflow.com/questions/10088320

复制
相关文章

相似问题

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