2011-09-29 12 views
20

私のアプリケーションでは、OAuthトークンとともに "https://graph.facebook.com/me"リクエストを使用して、ユーザーに関するプロパティを取得しています。電子メールアドレスは、私たちが必要とするプロパティの1つです。私たちがアクセスを要求すると、そのアクセス権を明示的に要求します。Facebook APIの断続的な電子メールアドレスがありません

99%の時間で正常に動作していますが、「電子メール」という名前のjSONデータに何もオブジェクトがないと応答が戻ってくることがあります。

ユーザーが私たちに許可を与えてもメールアドレスをブロックするなどの理由については、説明がありますか?それとも別のキーの下にあるのでしょうか?

ありがとうございました。

+0

あなたは、このための回避策がありますか? –

+0

おそらく他の人が言っていることに加えて、Facebookのアカウントは電子メールを持っていないか、この種のアクセスから電子メールが省かれています。私のクライアントにとって、これは彼らが単にアプリケーションを使用することが許可されていないことを意味します。 – changokun

+0

未確認のメールはAPI経由で送信されません: http://stackoverflow.com/questions/17532476/faceboofk-email-field-return-null-even-if-the-email-permission-is-set-and-acce –

答えて

3

ユーザーは、完全なアプリケーションを取り消さずに、アプリのプライバシー設定ページでメールアドレスの権限を取り消すことができます。最初に/ me/permissionsと呼んで、電子メールのアクセス権が引き続き付与されていることを確認することができます。

+1

それは理にかなっていますが、問題を再現できませんでした。自分のアカウントのアプリのプライバシー設定にアクセスすると、「メールを送信」の権限が「必須」と表示され、取り消すことはできません。 –

+0

私は同じ問題を抱えています。 /私が呼ばれたときにメールを返さないユーザーがいます。/me/permissionsとemail = 1をチェックしました。それはFacebookのバグか、ユーザーに電子メールが登録されていない可能性がありますか? –

+0

これはバグのようです。私はここにログインします:https://developers.facebook.com/bugs – bkaid

8

モバイル登録フォームhttp://touch.facebook.com/r.phpでは、電子メールアドレスまたは電話番号にサインアップすることができます。だから、私はすべてのFacebookユーザーがそれらと共に保存された電子メールアドレスを持っているとは思わない。

+1

詳細はこちら:https:// developers。 facebook.com/bugs/298946933534016 – Somatik

+0

+1、電子メールアドレスが有効でなくなった、または確認していないなど、他の方法で確認済みのメールアドレスを持っていない可能性もあります。 – Igy

1

同じ問題があり、まれにこのような状況が発生した場合、ユーザーには(2つのアドレスが登録されていても)プライマリ電子メールアドレスが定義されていないことがわかりました。通常、プライマリ電子メールアドレスを持たないことはできないため、このようなコスト割り当てを再現することはできません。

誰でも似たようなことを確認できますか?

2

電子メールフィールドが見つからない場合、ユーザーは、アクティベーションメッセージからのリンクをクリックして自分のプライマリアドレスを確認しません。

10

短い答え:すべてのユーザーが利用できる電子メールアドレスを持って行う者は、有効な、到達可能なメールアドレス

を持っていない可能性がありuserオブジェクト(https://developers.facebook.com/docs/reference/api/user/)のemailフィールドのドキュメントはここに期待される行動を明確にしません "有効な電子メールアドレスがない場合、このフィールドは返されません"

ユーザは電子メールアドレスを返さなければならないと考えるかもしれないと考えるかもしれない多くの状況があります。いくつかの一般的な理由:

  • はありません確認したアカウントに

    • ない電子メールアドレスは、ユーザーが自分のメールアドレスを再確認するためにそれらを必要なセキュリティチェックポイントを入力し
    • アカウントにメールアドレスを確認し、彼らはまだそれほど
    • を行っていません
    • ユーザーのメールアドレスは、あなたがまたしてもヴァルを持っているユーザーのために、(ユーザーが許可しないことを選択することができます)email延長許可を必要とする

  • 到達不能ですID、確認済の到達可能な電子メールアドレスをファイルに保存します。

    +0

    出典: https://developers.facebook.com/bugs/298946933534016 – nvioli

    +1

    この回答をそのバグレポートにコピーしました:P – Igy

    3

    あなたはFacebookのSDK 2.4以降を使用している場合は、戦略の下

    で「フィールド」を追加する必要はoAuth libraryの例です。

    FacebookStrategy.php線131

    、BEFORE:

    $me = $this->serverGet('https://graph.facebook.com/me', array('access_token' => $access_token), null, $headers); 
    

    AFTER:

    $me = $this->serverGet('https://graph.facebook.com/me', array('access_token' => $access_token,'fields'=>'email,name,first_name,last_name,age_range,gender'), null, $headers); 
    
    かかわらず、フィールドリストの

    、あなたはより多くの情報を取得したい場合それはデフォルトでは提供されていませんFacebookによって、権限は "スコープ"配列にある必要があります。 SDKで提供さ

    デフォルトのデータが含まれます。電子メール、パブリックプロファイル、user_friends

    関連する問題