2012-03-19 7 views
0

こんにちは、私はFacebookのアプリ開発には初めてで、初めてのアプリで作業しています。必要な権限を持っていてもグラフのapiでユーザーのメールを取得できません

私のアプリには、ユーザーの電子メールを取得する機能と、必要な特権があり、認証時にユーザーがこれらの特権を承認しましたが、グラフのAPIを使用してユーザーの電子メールを取得しようとすると、ユーザーの表示画像、名前などが正常に取得されました。認証で

:ユーザーの電子メールを取得

$dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . $redirect_uri . "&state=" . $_SESSION['state']."&scope=email,user_photos,publish_stream"; 

$userEmail = json_decode(file_get_contents('http://graph.facebook.com/' . $userId)) -> email; 
echo "email: ".$userEmail; 

親切にこれで私を助けて。 ありがとうございます!

答えて

1

URLは、私は、HTTPS必要があります。http //のINSEAD://

、また、アクセストークンが含まれています。

file_get_contents("https://graph.facebook.com/" . $userId . "/?access_token=" . $accesstoken); 
+0

最適です。ありがとうございました。 :) – Maven

0

リクエストコールを「認証する」ために、リクエストに「アクセストークン」を追加する必要があります。それ以外の場合は、パブリックデータのみが返されます。

ここにこのトークンを取得するための手順を探す:ユーザーが権限を受け入れる場合、http://developers.facebook.com/docs/authentication/

基本的には、Facebookのは、URLの$ REDIRECT_URIに彼をリダイレクトすると「コード」パラメータを追加します。このコードを使用すると、私は別のグラフAPI呼び出しで記述したAccessTokenを取得できます。

0

あなたは本当に、むしろ自分で一緒にURLをglommingよりも、FacebookのSDKを使用してする必要があります

$params = array(
    'scope' => 'email', 
    'redirect_uri' => $redirect_uri 
); 
$dialog_url = $facebook->getLoginUrl($params); 

よう 何かがあなたにダイアログをポップアップ表示するためのリンクを提供します。その後、リダイレクトされたページで、

$user_profile = $facebook->api('/me','GET'); 
echo $user_profile['email']; 

ドキュメントはhere

関連する問題