Codenameone 有没有办法让FB和Google OAuth登录在桌面构建/模拟器中工作?

Codenameone 有没有办法让FB和Google OAuth登录在桌面构建/模拟器中工作?,codenameone,Codenameone,这些在模拟器和桌面构建中被破坏。我在某处看到有人通过手动解析托管它们的嵌入式浏览器并编辑一些html内容来“修复”它们 是否有更清洁的解决方案或可以更详细解释的解决方案@Shai这个问题将来会解决吗?桌面构建是pro订阅的一大好处,可能会平衡许多人的付费规模。但是,社交登录在今天已经司空见惯,您不能期望移动用户为同一应用程序的桌面版本创建单独的登录。在模拟器中,您可以使用web登录的凭据,这应该可以正常工作,例如: Button facebook = new Button("Facebook",

这些在模拟器和桌面构建中被破坏。我在某处看到有人通过手动解析托管它们的嵌入式浏览器并编辑一些html内容来“修复”它们


是否有更清洁的解决方案或可以更详细解释的解决方案@Shai这个问题将来会解决吗?桌面构建是pro订阅的一大好处,可能会平衡许多人的付费规模。但是,社交登录在今天已经司空见惯,您不能期望移动用户为同一应用程序的桌面版本创建单独的登录。在模拟器中,您可以使用web登录的凭据,这应该可以正常工作,例如:

Button facebook = new Button("Facebook", Resources.getGlobalResources().getImage("facebook.png"), "FlagButton");
add(facebook);

facebook.addActionListener(e -> {
    final Login fb = FacebookConnect.getInstance();
    fb.setClientId("....");
    fb.setClientSecret("....");
    fb.setRedirectURI("https://www.codenameone.com/");
    fb.setCallback(new LoginCallback() {
        @Override
        public void loginFailed(String errorMessage) {
            ToastBar.showErrorMessage("Login failed: " + errorMessage);
        }

        @Override
        public void loginSuccessful() {                    
            String token = fb.getAccessToken().getToken();
            Response<Map> resp = Rest.get("https://graph.facebook.com/v2.12/me").
                    queryParam("access_token", token).
                    acceptJson().getAsJsonMap();
            String userId = (String)resp.getResponseData().get("id");
            new EnterPasswordForm(null, userId, null).show();
        }
    });
    fb.doLogin();
});
Button facebook=new按钮(“facebook”,Resources.getGlobalResources().getImage(“facebook.png”),“FlagButton”);
添加(facebook);
facebook.addActionListener(e->{
最终登录fb=FacebookConnect.getInstance();
fb.setClientId(“..”);
fb.setClientSecret(“..”);
fb.setRedirectURI(“https://www.codenameone.com/");
setCallback(新的LoginCallback(){
@凌驾
公共无效登录失败(字符串错误消息){
ToastBar.showErrorMessage(“登录失败:+errorMessage”);
}
@凌驾
public void loginssuccessful(){
字符串标记=fb.getAccessToken().getToken();
Response resp=Rest.get(“https://graph.facebook.com/v2.12/me").
queryParam(“访问令牌”,令牌)。
acceptJson().getAsJsonMap();
字符串userId=(字符串)resp.getResponseData().get(“id”);
新的EnterPasswordForm(null,userId,null).show();
}
});
多洛金();
});

谢谢,我在doLogin()之前调用了isUserLoggedIn(),模拟器不支持这一点。你有谷歌登录模拟器的例子吗?目前,jI-am可以显示要求您提供电子邮件地址的登录浏览器,但单击“下一步”不会产生任何效果。Google登录与
GoogleConnect
完全相同,而不是
FacebookConnect