首页 > 解决方案 > 有没有办法让 FB 和 Google OAuth 登录在桌面构建/模拟器中工作?

问题描述

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

是否有更清洁的解决方案或可以更详细地解释的解决方案?@Shai 将来会解决这个问题吗?桌面构建是专业订阅的巨大好处,并且可能会平衡许多人为此付费的规模。但是社交登录在今天很普遍,您不能指望移动用户为同一应用程序的桌面版本创建单独的登录

标签: codenameone

解决方案


在模拟器中,您可以使用凭据进行 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();
});

推荐阅读