2016-07-13 16 views
1

免責事項:私は比較的新しいPHPコーディングを行っており、Facebook SDKの新機能は非常に新しいです。Facebook SDK v5グラフでエラーが返されました:無効なOAuthアクセストークン

私は、FacebookのAPIをオンラインの資料とサンプルで習得しようとしていて、むしろ欠けていると感じています。私は非常に基本的なことをやろうとしています - 単にFacebookでログインしていくつかのユーザー値を取得するだけです。

Facebookの例に続いて、私はこのようになりますlogin.phpあります

<?php 
session_start(); 

require_once __DIR__ . '/../_fb/autoload.php'; 

$fb = new Facebook\Facebook([ 
'app_id' => '26777overwritten335', 
'app_secret' => '8260906deoverwrittenf286510', 
'default_graph_version' => 'v2.6', 
]); 

$helper = $fb->getRedirectLoginHelper(); 
$permissions = ['email', 'user_likes']; // optional 
$loginUrl = $helper->getLoginUrl('http://www.domain.com/_mdp/fb_dev/login-callback.php', $permissions); 

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>'; 
?> 

を...、それが正常に動作するようです。

私は、次のを持って、ログイン・callback.phpページ

:私はラインからのエコーを取得して、正常にログインすることができるように見えるん

<?php 
session_start(); 

require_once __DIR__ . '/../_fb/autoload.php'; 

$fb = new Facebook\Facebook([ 
    'app_id' => '267772overwritten335', 
    'app_secret' => '8260906de2overwritten1f286510', 
    'default_graph_version' => 'v2.6', 
]); 

$helper = $fb->getRedirectLoginHelper(); 
try { 
    $accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
} 

if (isset($accessToken)) { 
    // Logged in! 
    $_SESSION['facebook_access_token'] = (string) $accessToken; 
    echo 'You are now logged in!'; 
    echo '<br> the access token is: ' . $accessToken . '<br>'; 

    // Now you can redirect to another page and use the 
    // access token from $_SESSION['facebook_access_token'] 
} 
// Am Successfully Logged In Here 

try { 
    // Returns a `Facebook\FacebookResponse` object 
    $response = $fb->get('/me?fields=id,name', '$accessToken'); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
} 

$user = $response->getGraphUser(); 

echo 'Name: ' . $user['name']; 
// OR 
// echo 'Name: ' . $user->getName(); 
?> 

echo 'You are now logged in!'; 

私は非常に多くの異なるコード例を試してみましたが、さまざまなエラーが発生しましたが、上記のコードは次のように返されます。

Graph returned an error: Invalid OAuth access token. 

そして私はあらゆる方法で私が考えることができ、私が間違っていることをまだ見つけていないことを知りました。

誰かが私に何か不足していることを示すことができれば、うまくいけば私にいくつかの訂正されたコードラインを与えることができます。

また、FYI - グラフバージョン2.6をSDK 5で使用したいと思うのは、最近のバージョンでは利用できないエッジがいくつかあるからです。

私は正しい方向に向いています。

答えて

3
try { 
    // Returns a `Facebook\FacebookResponse` object 
    $response = $fb->get('/me?fields=id,name', '$accessToken'); 

あなたはここにリテラル$accessTokenを渡している - それは当然のことながら、有効なアクセストークンではありません。

PHPは文字列内の変数を一重引用符で解析しません。その点に関してhttp://php.net/manual/en/language.types.string.phpとお読みください。これは必要な基礎知識です。

そして、単純な変数を文字列にまとめるのをやめてください。

try { 
    // Returns a `Facebook\FacebookResponse` object 
    $response = $fb->get('/me?fields=id,name', $accessToken); 
+1

Aha!それは動作します。それはそんなにばかげた過ちだった。 Facebookのサンプルには... $ response = $ fb-> get( '/ me?fields = id、name'、 '[AccessToken]'); ...明らかに、例から一重引用符も削除する必要があることを認識できませんでした。 ありがとうございました - 私は昨日働かそうと数時間を過ごしました。 – mdp716

関連する問題