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ますが、サーバーからは動作しません (接続がタイムアウトします)。phpinfo() に従って、openssl ライブラリが有効になります。

更新: 問題はどの https URL でも発生するようです。allow_url_fopen はオンです。

更新 2: ファイアウォールの問題のようです。SSH 経由でサーバーにログオンすると、https URL を wget できません。ポート 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>';
?>

okが出力を取得する場合:

openssl: isload
http: ok
https: ok
于 2012-12-23T20:40:02.333 に答える
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 に答える