2016-06-12 18 views
-1

私はPHPを使用してFacebookのログインを作成しようとしています。私はこれまでこれを行うために使っている何かをオンラインで見つけました。残念ながら、それは基本的なプロフィール情報を求めているだけで、私はそれも友人に要求したいと思っています。私はコードからこれをやろうとしましたが、許可を求めていません。どうすれば許可を要求できますか?FacebookのログインPHPの許可

Link To Website

if (isset($session)) { 
    // graph api request for user data 
    $request = new FacebookRequest($session, 'GET', '/me'); 
    $response = $request->execute(); 
    // get response 


    $graphObject = $response->getGraphObject(); 
     $fbid = $graphObject->getProperty('id');    // To Get Facebook ID 
     $fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name 
     $fbfriends = $graphObject->getProperty('friends'); // To Get Facebook full name 
     $femail = $graphObject->getProperty('email'); // To Get Facebook email ID 
    /* ---- Session Variables -----*/ 
     $_SESSION['FBID'] = $fbid;   
     $_SESSION['FULLNAME'] = $fbfullname; 
     $_SESSION['FRIENDS'] = $fbfriends; 
     $_SESSION['EMAIL'] = $femail; 
    /* ---- header location after session ----*/ 
    header("Location: index.php"); 
} else { 
    $loginUrl = $helper->getLoginUrl(); 
header("Location: ".$loginUrl); 
} 

答えて

0

あなたはこのような何かを行う必要があります。それは私が思う唯一の方法ではありませんが、それは私のために動作します。

のindex.php

<?php 

     require_once __DIR__ . '\..\src\Facebook\autoload.php'; 

    session_start(); 

    $fb = new Facebook\Facebook([ 
     'app_id' => '???', 
     'app_secret' => '???', 
     'default_graph_version' => 'v2.2', 
     ]); 

    $helper = $fb->getRedirectLoginHelper(); 

    $permissions = ['email','user_friends', 'publish_actions', 'user_posts']; //here you set all the permisions 
// (be aware that for some permisions you'll need to send your app to Facebook Review) 
    $loginUrl = $helper->getLoginUrl('http://localhost/fb-callback.php', $permissions); 

    echo htmlspecialchars($loginUrl); // this will echo the URL that needs to be clicked (something like 'Login with Facebook' button) 

    ?> 

FB-callback.php

<?php 
    require_once __DIR__ . '\..\src\Facebook\autoload.php'; 
    session_start(); 
$fb = new Facebook\Facebook([ 
    'app_id' => '???', // Replace {app-id} with your app id 
    'app_secret' => '???', 
    'default_graph_version' => 'v2.2', 
    ]); 
$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)) { 
    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); 
// Validation (these will throw FacebookSDKException's when they fail) 
$tokenMetadata->validateAppId('???'); // Replace {app-id} with your app id 
// If you know the user ID this access token belongs to, you can validate it here 
//$tokenMetadata->validateUserId('123'); 
$tokenMetadata->validateExpiration(); 
if (! $accessToken->isLongLived()) { 
    // Exchanges a short-lived access token for a long-lived one 
    try { 
    $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); 
    } catch (Facebook\Exceptions\FacebookSDKException $e) { 
    echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n"; 
    exit; 
    } 
    echo '<h3>Long-lived</h3>'; 
    var_dump($accessToken->getValue()); 
} 
$_SESSION['fb_access_token'] = (string) $accessToken; 
// User is logged in with a long-lived access token. 
// You can redirect them to a members-only page. 
//header('Location: https://example.com/members.php'); 
header('Location: http://localhost/page_after_login'); 
?> 

EDIT:このコードは、ここからFacebookログイン例に対応:https://developers.facebook.com/docs/php/howto/example_facebook_login

+0

がこれです新しいファイルですか?もしそうなら、それはどこで救われるでしょうか? –

+0

はい新しいファイルです。必要な場所に保存して$ loginUrlのURLを変更することができます。これを読んでください(私にとっては非常に助かりました):https://developers.facebook.com/docs/php/howto/example_facebook_login – mitr00

+0

私はあなたが言ったことをすべて終えましたが、私は何らかの誤りを犯すようです。私は何を間違えたのですか? 警告:require_once(/home/u742400531/public_html/1353http://friends.esy.es/1353/autoload.php):ストリームを開けませんでした:/ home/u742400531/public_html/1353/indexにそのようなファイルやディレクトリはありません.php on line 3 致命的なエラー:require_once():必要な開けませんでした '/home/u742400531/public_html/1353http://friends.esy.es/1353/autoload.php'(include_path = '。:/ opt/php-5.5/pear ')in /home/u742400531/public_html/1353/index.php 3行目 –

関連する問題