我使用此示例连接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进行了测试,但结果相同。
我如何收到电子邮件?
由于
答案 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()