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/

除了基本教程之外,这是您必须实施的教程才能使其正常工作: https ://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with-facebook/#step3

您要做的是实现第一个登录示例,然后将其更改为第二个示例,然后在最终产品中使用第一个示例的部分内容。如果您从我发布的第一个教程开始仔细阅读每个教程,您将使其工作并学习如何通过实现额外的权限请求来从用户那里捕获您想要的任何数据。

希望这对其他人有帮助。我在“SO”上搜索的所有问题都是指具有过时方法的旧 API。

于 2012-10-30T15:24:39.257 回答
0

如需更多权限,您可以将 .openSession() 函数更改为 .openSessionForRead(String appId, List < String > Permissions) 如果您在 strings.xml 上有 app_id 运行 .openSessionForRead(null, List Permissions)

于 2012-11-08T17:35:18.803 回答