0

我正在尝试使用以下代码获取我的 FB 应用访问令牌:

$app_token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id
. "&client_secret=" . $app_secret 
. "&grant_type=client_credentials";
$response = file_get_contents($app_token_url);
$params = null;
parse_str($response, $params);

echo("This app's access token is: " . $params['access_token']);

它在我的服务器上运行良好,localhost但在我的服务器上运行良好(连接超时)。openssl 库根据 phpinfo() 启用。

更新:问题似乎出现在任何 https URL 上。allow_url_fopen 开启。

更新 2:似乎是防火墙问题。当我通过 SSH 登录服务器时,我无法获取任何 https url。我已经要求他们打开 443 端口。

4

3 回答 3

2

尝试检查您的 openssl 是否可以在您的服务器中包装数据?

要检查的代码:

<?php
$check = stream_get_wrappers();
echo 'openssl: ',  extension_loaded  ('openssl') ? 'isload':'noload','<br>';
echo 'http: ', in_array('http', $check) ? 'ok':'no','<br>';
echo 'https: ', in_array('https', $check) ? 'ok':'no','<br>';
?>

如果确定将得到输出:

openssl: isload
http: ok
https: ok
于 2012-12-23T20:40:02.333 回答
1
<?php

$url = 'https://www.google.com.eg';

function curl_get_contents($url){
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
echo curl_get_contents($url);
?>
于 2017-02-13T02:28:04.127 回答
0

尝试增加超时限制:

<?php 
$context = stream_context_create(array( 
    'http' => array( 
        'timeout' => 60 
        ) 
    ) 
); 
file_get_contents("http://example.com/", 0, $context); 
?>
于 2012-12-23T16:02:23.603 回答