1

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

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

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

这似乎在 Native Iphone 应用程序上自动发生 -通过 iOS 9 登录到 FB 时打开 Safari 网络视图。对于 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();
4

2 回答 2

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,无需进行任何更改即可解决此问题。服务器将在星期五更新 - 之后您应该能够发送您的构建(没有特殊的构建提示)并且它会工作。

于 2016-06-14T21:04:31.187 回答
0

安装并激活 Facebook 应用程序后,代号 One 使用本机 Facebook 登录。您需要按照开发人员指南部分中的说明使用 Facebook Connect API 。

于 2016-06-14T10:30:06.367 回答