无法通过Facebook Android SDK获取电子邮件地址

时间:2015-07-15 15:28:00

标签: android facebook email

我尝试使用以下代码通过我的应用获取我的Facebook电子邮件地址,但返回值为空。

我不知道是什么原因,但我可以使用<a href="javascript:prova();">prova</a> <!-- Or Javascript alternative: --> <img id="image" src="mini.jpg" width="200" height="200" /> <script type="text/javascript"> function prova() { $('#image').triggerHandler('frameChange',2); console.log("ssss"); /* $('#image').reel('images', 'mini2/###.jpg'); console.log("qqqqqqq"); $('#image').reel('draggable', 'true'); console.log("qqqqqqq") *//* console.log($('#image').reel('frame')); console.log($('#image').reel('row')); $('#image').reel('draggable','true'); $('#image').reel('frame',1); console.log($('#image').reel('frame')); } </script> 获取电子邮件地址。有没有人知道这段代码有什么问题?

Graph API explorer

3 个答案:

答案 0 :(得分:3)

最后,我找到了解决方案,使用newMeRequest方法从用户对象中获取字段。在这种情况下,我需要将电子邮件作为附加字段,因此将“email”添加到fields参数和请求特定字段中:

GraphRequest request = GraphRequest.newMeRequest( 

//...

});

Bundle parameters = new Bundle();

parameters.putString("fields", "id,name,email");

request.setParameters(parameters);

request.executeAsync();

答案 1 :(得分:1)

在发出请求之前设置读取权限,并按以下方式执行:

 GraphRequestAsyncTask request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject user, GraphResponse response) {
                        final Profile profile = Profile.getCurrentProfile();

                        if ((user != null) && (profile != null)) {

                            accessToken = AccessToken.getCurrentAccessToken();

                            if (accessToken.getDeclinedPermissions().isEmpty()) {


                                try {
                                   String email = user.get("email").toString();
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }


                            }


                        }
                    }
                }).executeAsync();

答案 2 :(得分:0)

您必须在请求之前设置权限。

无论如何,email字段可能会返回null,原因有两个:

1 - 用户在注册期间未确认电子邮件地址

2 - 用户可以使用电话号码而不是电子邮件在Facebook上注册。

文档说:

  

请注意,即使您申请电子邮件权限,也不能保证   你会得到一个电子邮件地址。例如,如果有人注册了   Facebook上有电话号码而不是电子邮件地址,电子邮件   字段可能是空的。