代号一个。使用Webview组件

时间:2016-06-14 09:46:25

标签: ios facebook webview codenameone sfsafariviewcontroller

我的cn1应用程序包含了Facebook和Google+的登录信息。当在Iphone上调用doLogn()时,会打开一个Safari页面,允许用户分别输入Facebook或Google的凭据。我面临的问题是我的应用程序刚被苹果拒绝,因为用户被带出应用程序并进入safari以便使用Facebook或Google登录,据苹果公司称,这提供了糟糕的用户经验&#34 ;. Apple建议我使用Safari View Controller API,它允许显示URL并从应用程序中的嵌入式浏览器检查证书,以便客户可以验证网页URL和SSL证书以确认他们正在将登录凭据输入一个合法的页面。

我注意到Codename有一个WebView组件。但是,当我调用doLogin()时,我不确定是否可以在Webview而不是Safari中打开url。如果是。我如何实现这一点,Web View是否使用正确的组件?或者我是否需要使用Safari View Controller API,如果是这样,我如何将此api添加到我的cn1项目中,是否可能?

我建议将codenameone合并到他们的Facebook和Google登录功能中,以防止任何未来的用户被应用商店拒绝。

这似乎会在原生Iphone应用上自动发生 - Safari web view opening when logging to FB through iOS 9。对于IOS,我应该尝试实现本地Facebook登录吗?如果是这样。我从哪里开始?

final Login fb = FacebookConnect.getInstance();
    fb.setClientId("XXXXXXXXXXXXXX");
    fb.setClientSecret("XXXXXXXXXXXXX");
    fb.setRedirectURI("http://www.mibrandapp.com");
    FaceBookAccess.setPermissions(new String[]{"id", "name", "first_name", "last_name"});
    fb.setScope("id");
    fb.setCallback(new LoginCallback() {
        @Override
        public void loginFailed(String errorMessage) {
            Dialog dg = new Dialog();
            dg.setTitle("Login failed");
            dg.show();
        }

        @Override
        public void loginSuccessful() {
            ....
        }
    });
    //fb.doLogin();
    fb.nativelogin();

2 个答案:

答案 0 :(得分:1)

目前,Codename One构建服务器使用Facebook IOS SDK 4.4,它使用打开Facebook应用程序进行身份验证的默认行为(如果已安装)和Safari应用程序(如果未安装)。

如果切换到" iphone_new"构建目标(很快将成为标准)它使用较新的Facebook IOS SDK 4.12,它将(默认情况下)在应用程序的Web视图中处理身份验证。

对此方法运行一些测试,我发现在iOS 9上,您需要将以下内容添加到ios.plistInject构建提示中:

<key>LSApplicationQueriesSchemes</key><array><string>fbauth2</string></array>

我刚刚提交了一个更改,将自动包含此更改,因此在下一次服务器更新后(可能在星期五),它将在没有此构建提示的情况下正常工作。

2016年6月14日更新

我刚刚在SVN中对此进行了更新,因此默认使用IOS SDK 4.12将解决此问题,而无需进行任何更改。服务器将在星期五更新 - 之后您应该能够发送您的构建(没有特殊的构建提示),它将起作用。

答案 1 :(得分:0)

当安装并激活Facebook应用程序时,Codename One使用本机Facebook登录。您需要按照the developer guide section中的说明使用Facebook Connect API。