如何在Android上使用登录Facebook获取用户电子邮件

时间:2015-09-03 02:03:48

标签: android facebook facebook-graph-api

我使用此示例连接Android上的登录与Facebook(https://github.com/RajivManivannan/Android-Social-Login),当我在Android设备中运行时,示例向我提供用户电子邮件和其他信息。但是在我的应用程序中,当我使用返回上面的示例时,它只返回用户名和ID。

{Response:  responseCode: 200, graphObject: {"name":"User Name","id":"123456789321654987"}, error: null}

导入SDK:编译'com.facebook.android:facebook-android-sdk:4.0.1'

我认为问题是我在Facebook配置中的应用程序,但我无法弄明白。我的应用只返回名称和ID

该应用已在Facebook控制台批准的项目上:

  

电子邮件,public_profile和user_friends。

我使用不同的电子邮件ID进行了测试,但结果相同。

我如何收到电子邮件?

由于

3 个答案:

答案 0 :(得分:1)

确保您在Facebook开发人员控制台的FB应用设置中列为开发人员。那里有正确的密钥哈希。此外,请确保您在我的请求中请求电子邮件权限。

除非Facebook已批准您的应用以获得扩展电子邮件权限,否则除了您在Facebook Developer控制台中注册为管理员,开发人员或测试人员之外的任何人,您将无法访问某些数据,例如电子邮件地址。

答案 1 :(得分:1)

请求时是否在电子邮件中包含了电子邮件?

即:

List<String> permissions = Arrays.asList("public_profile", "email", "user_friends");

然后致电:

public void logInWithReadPermissions(Activity activity, Collection permissions)

拥有您的权限。

这是facebook的文档: https://developers.facebook.com/docs/reference/android/current/class/LoginManager/

答案 2 :(得分:0)

FacebookCallback不提供用户电子邮件。

您必须以这种方式使用GraphRequest.newMeRequest(..)

   val request = GraphRequest.newMeRequest(facebookLoginresult.accessToken) { 
                 fbJSONObject: JSONObject?, _: GraphResponse? ->
                 //your code 
            }

        val parameters = Bundle()
        parameters.putString("fields", "first_name,last_name,email")
        request.parameters = parameters
        request.executeAsync()