Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Codename one Facebook登录电子邮件=空_Facebook_Email_Facebook Graph Api_Codenameone - Fatal编程技术网

Codename one Facebook登录电子邮件=空

Codename one Facebook登录电子邮件=空,facebook,email,facebook-graph-api,codenameone,Facebook,Email,Facebook Graph Api,Codenameone,我已经通过FacebookConnect成功登录了facebook。然后我尝试提取用户的姓名和电子邮件地址。我设法得到他们的名字,但他们的电子邮件地址是空白的。我用我的Facebook账号试过了,我把我的电子邮件地址设置为公开的。我还添加了ios.facebook_permissons=“email”、“public_profile”、“user_birth”和android的权限。这是我的密码 登录 public void facebookLogin() { final Login f

我已经通过FacebookConnect成功登录了facebook。然后我尝试提取用户的姓名和电子邮件地址。我设法得到他们的名字,但他们的电子邮件地址是空白的。我用我的Facebook账号试过了,我把我的电子邮件地址设置为公开的。我还添加了ios.facebook_permissons=“email”、“public_profile”、“user_birth”和android的权限。这是我的密码

登录

public void facebookLogin() {
    final Login fb = FacebookConnect.getInstance();
    fb.setClientId("964865683621261");
            fb.setClientSecret("1fb729a93d96bb8700f2c879f520052b");
            fb.setRedirectURI("http://kyven.co.za");
            FaceBookAccess.setPermissions(new String[]{"user_birthday", "email", "public_profile"});
            fb.setCallback(new LoginCallback(){
                @Override
                public void loginFailed(String errorMessage) {
                    Dialog dg = new Dialog();
                    dg.setTitle("Login failed");
                    dg.show();
                }
                @Override
                public void loginSuccessful() {
                    InfiniteProgress ip = new InfiniteProgress();
                            ip.setUIID("InfiniteProgress");
                            final Dialog d = ip.showInifiniteBlocking();
                    Preferences.set("token", fb.getAccessToken().getToken());
                    final FacebookData data = new FacebookData();
                    data.fetchData(Preferences.get("token", (String) null), new Runnable(){

                        public void run() {
                            String email = data.getEmail();
                            Dialog.show("hello " + data.getName(), data.getEmail(), "OK", null);
                            String fullName = data.getName();
                            String[] args = { email, fullName};
                            String[] keys = { "email", "password"};
                            int id = postRequest(args, keys, "facebook_login.php");
                            if (id != 0) {
                                Preferences.set("userId", id);
                                setUpMainPage();
                                Hashtable meta = new Hashtable();
                                meta.put(com.codename1.push.Push.GOOGLE_PUSH_KEY,
                                    1276);
                                Display.getInstance().registerPush(meta, true);
                            } else {
                                Dialog.show("Error", "There was an error logging you in"
                                    + " please try again later", "OK", null);

                                d.dispose();
                    }
                        } 
                    });
                }
            });
            fb.doLogin();
}
获取数据

public class FacebookData implements UserData {

String name, email;

public String getName() {
    return name;
}

public String getEmail() {
    return email;
}

public void fetchData(String token, final Runnable callback) {
    ConnectionRequest req = new ConnectionRequest() {
            @Override
            protected void readResponse(InputStream input) throws IOException {
                JSONParser parser = new JSONParser();
                Map<String, Object> parsed = parser.parseJSON(new InputStreamReader(input, "UTF-8"));
                name = (String) parsed.get("name");
                email = (String) parsed.get("email");
            }

            @Override
            protected void postResponse() {
                callback.run();
            }

            @Override
            protected void handleErrorResponseCode(int code, String message) {

            }
        };
        req.setPost(false);
        req.setUrl("https://graph.facebook.com/v2.4/me");
        req.addArgumentNoEncoding("access_token", token);
        NetworkManager.getInstance().addToQueue(req);
}

}
公共类FacebookData实现UserData{
字符串名称,电子邮件;
公共字符串getName(){
返回名称;
}
公共字符串getEmail(){
回复邮件;
}
公共void fetchData(字符串标记,最终可运行回调){
ConnectionRequest req=新的ConnectionRequest(){
@凌驾
受保护的void readResponse(InputStream输入)引发IOException{
JSONParser=新的JSONParser();
Map parsed=parser.parseJSON(新的InputStreamReader(输入,“UTF-8”));
name=(字符串)已解析。get(“name”);
email=(字符串)已解析。获取(“email”);
}
@凌驾
受保护的void postResponse(){
callback.run();
}
@凌驾
受保护的无效handleErrorResponseCode(整数代码、字符串消息){
}
};
请求setPost(错误);
请求设置URL(“https://graph.facebook.com/v2.4/me");
请求AddArgumentNoEncode(“访问令牌”,令牌);
NetworkManager.getInstance().addToQueue(req);
}
}
来自

当您处理自己的用户列表时,用户通过 注册后,您通常可以向该用户询问任何问题。但是,什么时候? 用户通过Facebook、Google或任何其他服务登录,然后您 用户详细信息由该服务决定…​ 这是痛苦的 清除那些甚至不提供电子邮件地址的服务 登录时的默认设置。它有时可以在Facebook上访问,但是 仅适用于未选择隐藏它的用户


一般来说,Facebook不保证访问用户的电子邮件地址,而且通常不提供。你需要使用Facebook id作为唯一标识符,如果你没有收到电子邮件,你需要要求用户将其发送给你。

那么我的代码没有问题吗?代码主要用于模拟器,而不是通过构建提示指定权限和要求的设备。你好,shai,我如何向用户申请获取电子邮件id的权限。我有上面的确切代码和相同的电子邮件问题。在facebook Api浏览器中,“这个url也提供电子邮件id,但如果我在android设备上使用它,id、姓名和电子邮件都是空的。我在聊天教程的facebook集成部分讨论了这一点。电子邮件在facebook中可以为空,据我所知,我们对此无能为力。@cbroe这是一个代号问题,不是javascript问题…@ShaiAlmog这是一个一般API版本问题,不取决于您使用的特定语言或SDK。副本包含对一般问题的解释;在使用特定SDK时如何询问字段是开发人员在这些更改中一直沉睡到现在的事情,现在至少可以自己去查阅相关文档了。