ios - 代号一。使用 Webview 组件登录 Facebook

标签 ios facebook webview codenameone sfsafariviewcontroller

我的 cn1 应用程序包含使用 Facebook 和 Google+ 登录。当在 Iphone 上调用 doLogn() 时,将打开一个 Safari 页面,允许用户分别输入 Facebook 或 Google 的凭据。我面临的问题是我的应用程序刚刚被苹果公司拒绝,因为用户被带出应用程序并进入 safari 以便使用 Facebook 或谷歌登录,根据苹果公司的说法,这提供了“糟糕的用户体验”。 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 登录功能中,以防止任何 future 的用户被应用商店拒绝。

这似乎在 native 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();

最佳答案

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

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

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

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

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

2016 年 6 月 14 日更新

我刚刚在 SVN 中更新了它,这样它将默认使用 IOS SDK 4.12,无需进行任何更改即可解决此问题。服务器将在周五更新 - 之后您应该能够发送您的构建(没有特殊构建提示)并且它会工作。

关于ios - 代号一。使用 Webview 组件登录 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37808517/

相关文章:

ios - 如何测试 iOS 应用程序的 facebook 见解?

java - Facebook 分享图片 sharedialog

android - 在 Webview Activity 中打开 RSS 链接

android - android中的webview主机应用程序

ios - 是否可以使用 Storyboard创建非全屏 UITableView?

ios - 如何在 iOS10 (Swift 3) 中获取正在播放歌曲的歌词

javascript - 共享 Canvas 应用程序时不允许 og :image, "Facebook CDN"

ruby-on-rails - 如何在 Facebook Canvas 上以不同方式显示我现有的 Rails 应用程序

objective-c - Cocoa:如何在 Cocoa 中禁用 Web View 的所有用户交互?

ios - 从关系查询 Parse 获取 PFUser - iOS - Objective C