###前提・実現したいこと
PHPで、facebookのログイン機能を実現したい。
https://github.com/facebook/php-graph-sdk/blob/5.x/docs/examples/facebook_login.md
を参考にしています。
###詳細
たぶん認証は通っていて、下記のコードで
var_dump($tokenMetadata);
下記のように出力されます。
object(Facebook\Authentication\AccessTokenMetadata)#13 (1) { ["metadata":protected]=> array(8) { ["app_id"]=> string(15) "xxxxxxxxxxxxxxx" ["type"]=> string(4) "USER" ["application"]=> string(18) "XXXXXXXXXXXXXXXXXX" ["expires_at"]=> object(DateTime)#17 (3) { ["date"]=> string(26) "2017-12-03 09:14:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } ["is_valid"]=> bool(true) ["issued_at"]=> object(DateTime)#18 (3) { ["date"]=> string(26) "2017-10-04 09:14:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" } ["scopes"]=> array(2) { [0]=> string(5) "email" [1]=> string(14) "public_profile" } ["user_id"]=> string(15) "xxxxxxxxxxxxxxxxxxxx" } }
この、["user_id"]部分を取り出したいのですが、どう記述してよいのかわかりません。
###試したこと
echo (string) $tokenMetadata["\0*\0user_id"];
→Cannot use object of type
###現在のコード
- ログインリンク生成部
require_once("sdk/facebook/src/Facebook/Facebook.php"); require_once("sdk/facebook/src/Facebook/autoload.php"); $fb = new Facebook\Facebook([ 'app_id' => 'xxxxx', 'app_secret' => 'xxxxxx', 'default_graph_version' => 'v2.10', ]); $helper = $fb->getRedirectLoginHelper(); $permissions = ['email']; // Optional permissions $loginUrl = $helper->getLoginUrl('リダイレクトするコールバックURL', $permissions); ?> <a href="' . $loginUrl . '"><img src="xxx" /></a>
- リダイレクトするコールバックURL
session_start(); require_once("src/Facebook/Facebook.php"); require_once("src/Facebook/autoload.php"); $fb = new Facebook\Facebook([ 'app_id' => 'xxxxx', 'app_secret' => 'xxxxxxx', 'default_graph_version' => 'v2.10', ]); $helper = $fb->getRedirectLoginHelper(); try { $accessToken = $helper->getAccessToken('コールバックURL'); } 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 SDKa returned an error: ' . $e->getMessage(); exit; } if (! isset($accessToken)) { if ($helper->getError()) { header('HTTP/1.0 401 Unauthorized'); echo "Error: " . $helper->getError() . "\n"; echo "Error Code: " . $helper->getErrorCode() . "\n"; echo "Error Reason: " . $helper->getErrorReason() . "\n"; echo "Error Description: " . $helper->getErrorDescription() . "\n"; } else { header('HTTP/1.0 400 Bad Request'); echo 'Bad request'; } exit; } // Logged in echo '<h3>Access Token</h3>'; var_dump($accessToken->getValue()); // The OAuth 2.0 client handler helps us manage access tokens $oAuth2Client = $fb->getOAuth2Client(); // Get the access token metadata from /debug_token $tokenMetadata = $oAuth2Client->debugToken($accessToken); echo '<h3>Metadata</h3>'; var_dump($tokenMetadata); //ここまでサンプルどおり。 $tokenMetadata->metadata->user_id; (Cannot access protected property) echo $tokenMetadata["\0*\0metadata"]["user_id"]; (Cannot use object of type)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/04 02:29
2017/10/04 02:33
2017/10/04 02:35
2017/10/04 02:47
2017/10/04 02:53 編集
2017/10/04 03:15
2017/10/04 03:21
2017/10/04 04:20
2017/10/04 04:26