Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android parse sdk facebook登录无法获取电子邮件_Android_Facebook_Facebook Graph Api_Parse Platform_Sdk - Fatal编程技术网

android parse sdk facebook登录无法获取电子邮件

android parse sdk facebook登录无法获取电子邮件,android,facebook,facebook-graph-api,parse-platform,sdk,Android,Facebook,Facebook Graph Api,Parse Platform,Sdk,Im将parse和FacebookSDK集成到我的项目及其工作中,我得到了facebook用户的id和用户名 我的问题是,我无法获得任何其他信息,如电子邮件、性别或任何其他信息,即使我为它们添加了权限 这是许可证: private static final List<String> Permissions = Arrays.asList("public_profile","email","user_friends","user_birthday","user_location","u

Im将parse和FacebookSDK集成到我的项目及其工作中,我得到了facebook用户的id和用户名 我的问题是,我无法获得任何其他信息,如电子邮件、性别或任何其他信息,即使我为它们添加了权限

这是许可证:

private static final List<String> Permissions = Arrays.asList("public_profile","email","user_friends","user_birthday","user_location","user_relationships");
从facebook获取用户详细信息:

public String name,email;
ParseUser parseUser=new ParseUser();

private void getUserDetailsFromFB() {
    GraphRequest request = GraphRequest.newMeRequest(
            AccessToken.getCurrentAccessToken(),
            new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(
                        JSONObject object,
                        GraphResponse response) {

                    try {
                        String id=object.getString("id");
                        String name=object.getString("name");
                        String email=object.getString("email");
                        String gender=object.getString("gender");
                        String birthday=object.getString("birthday");

                    } catch (JSONException e) {
                        e.printStackTrace(); 
                    }
                }
            });
    Bundle parameters = new Bundle();
    parameters.putString("fields", "id,name,link,email");
    request.setParameters(parameters);
    request.executeAsync();

}

我只获取id和姓名以及任何其他信息给我任何建议?

我遇到了完全相同的问题,以下是我解决问题的方法:

  • 单击“工具和支持”(位于顶部菜单)
  • 单击“图形API资源管理器”(在左侧菜单中称为“工具”)
  • 其中显示“Application:Graph API Explorer”(右上角)将其更改为您正在使用的应用程序
  • 其中显示“获取令牌”,单击“获取用户访问令牌”
  • 勾选“用户关于我”
  • 单击“扩展权限”
  • 勾选“电子邮件”
  • 单击“获取访问令牌”
  • Facebook可能会提示您确认
  • 然后,您的应用程序应该有权检索facebook用户的电子邮件地址

    希望这有帮助

    问候,,
    Nathanial

    访问此ink或在不使用parse im的2个解决方案中使用parse,因为它们包含在文档中,也适用于FB,所以它不应该是loginbutton,也不使用Session。我会在Graph API Explorer上使用相同的访问令牌尝试相同的调用,看看是否能拿回数据,如果不是,则这不是SDK问题,只是您无法访问数据(电子邮件)
    public String name,email;
    ParseUser parseUser=new ParseUser();
    
    private void getUserDetailsFromFB() {
        GraphRequest request = GraphRequest.newMeRequest(
                AccessToken.getCurrentAccessToken(),
                new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(
                            JSONObject object,
                            GraphResponse response) {
    
                        try {
                            String id=object.getString("id");
                            String name=object.getString("name");
                            String email=object.getString("email");
                            String gender=object.getString("gender");
                            String birthday=object.getString("birthday");
    
                        } catch (JSONException e) {
                            e.printStackTrace(); 
                        }
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,link,email");
        request.setParameters(parameters);
        request.executeAsync();
    
    }