1

チュートリアルに従って Facebook ログインをアプリに統合しましたが、ユーザーのメール アドレスを取得する方法に関する適切な情報が見つかりません。メールは本当に私が必要とする唯一のものです。その他の基本情報を取得できます。マイ アクティビティは FaceBookActivity を拡張します。ユーザーがクリックしてアプリにログインすると、次のように呼び出します。

this.openSession();

で、〜がある:

@Override
    protected void onSessionStateChange(SessionState state, Exception exception) 
    {
          // user has either logged in or not ...
          if (state.isOpened()) 
          {
                // make request to the /me API
                Request request = Request.newMeRequest(
                  this.getSession(),
                  new Request.GraphUserCallback() 
                  {
                        // callback after Graph API response with user object
                        @Override
                        public void onCompleted(GraphUser user, Response response) 
                        {
                          if (user != null) 
                          {  
                            TextView welcome = (TextView) findViewById(R.id.welcome);
                            welcome.setText("Hello " + user.getName() + "!");
                            Log.d("user fname",user.getFirstName());
                            Log.d("user lname",user.getLastName());
                            Log.d("user username",user.getUsername());
                            Log.d("user email",(String)user.getProperty("email"));

                      }
                    }
              }
            );

                Request.executeBatchAsync(request);
          }
    }

GraphUser は電子メールを公開しません。何か案は?

Facebook 開発パネルで「メール」権限を設定しました。

4

3 に答える 3

6

新しい Facebook SDK 3.0 の場合

String email = (String) response.getGraphObject().getProperty("email");
于 2013-04-03T13:29:43.050 に答える
2

さて、私はこれを理解しました。GraphUser オブジェクトにはメール アドレスが含まれますが、基本的なチュートリアルとはまったく異なるログイン方法のチュートリアルを見つけました。

基本的なチュートリアルは次のとおりです: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/

そして、これを機能させるために基本的なチュートリアルに加えて実装する必要があるチュートリアルは次のとおりです

あなたがしなければならないことは、最初のログイン サンプルを実装し、それを 2 番目のサンプルに変更してから、最終製品で最初のサンプルの一部を使用することです。最初に投稿したチュートリアルから始めて、各チュートリアルを注意深く実行すると、これが機能し、追加のアクセス許可要求を実装して、ユーザーから必要なデータを取得する方法を学習できます。

これが他の誰かに役立つことを願っています。「SO」で検索したすべての質問は、古いメソッドを持つ古い API を参照しています。

于 2012-10-30T15:24:39.257 に答える
0

より多くのアクセス許可について .openSession() 関数を .openSessionForRead(String appId, List < String > Permissions) に変更できます。

于 2012-11-08T17:35:18.803 に答える