【问题标题】:SFSafariViewController and JavascriptSFSafariViewController 和 Javascript
【发布时间】:2017-05-31 03:23:42
【问题描述】:

我正在开发 IOS 应用程序,在该应用程序中我在 SFSafariViewController 中打开登录页面。并且在登录成功时在该登录页面上生成一个 Json 响应。

我想得到那个响应并关闭 SFSafariViewController。

在 android 中我是通过 Javascript 和 Javascript 接口完成的。

我的安卓服务器端代码:

<?php
//curl initialize
//Some code
//Curl Execution
$response = curl_exe($ch)
?>
<script>
showAndroidToast("<?php echo $response;?>");
function showAndroidToast(res){
Android.dataResponse(res);
}
</script>

在安卓中。

Android.dataResponse(res) 是我添加到 Chrome 自定义选项卡 (https://developer.chrome.com/multidevice/android/customtabs) 中的 javascript 界面。

我想为我的 IOS 应用程序提供类似的功能。我不知道。 SFSafariViewController 是否可以做到这一点?

【问题讨论】:

    标签: javascript ios sfsafariviewcontroller


    【解决方案1】:

    根据this StackOverflow 的回答,您无法使用SFSafariViewController 下载文件此外,似乎没有代表根据Apple's documentation 启动 JSON 的下载

    鉴于这些信息,我很确定你最安全的选择是走WKWebView 路线,即使 WebKit 在 iOS 上有各种限制。您可能可以使用this 作为起点。

    我会亲自调用我的登录 API 并创建一个本机登录表单,从而完全绕过 Apple 的浏览选项。我希望这会有所帮助!

    编辑

    OP 实际上是使用 FitBit 的 API 和 OAuth2 并且根据 FitBit 的文档:

    对于本机应用程序,这意味着授权页面必须在默认浏览器中打开。本机应用程序可以使用自定义 URL 方案作为重定向 URI,将用户从浏览器重定向回请求权限的应用程序。 iOS 应用程序可以使用 SFSafariViewController 类而不是应用程序切换到 Safari。禁止使用 WKWebView 或 UIWebView 类。

    可以在their documentation 中找到使用 FitBit 的授权码授予流程的指针,但没有适当的指南。但是OAuthSwift 支持 FitBit,所以这可能是实现登录的最简单方法。还可以找到关于示例集成的讨论 herehere

    【讨论】:

    • 我正在集成 fitbit API。所以根据他们的文件。 “iOS 应用程序可以使用 SFSafariViewController 类而不是应用程序切换到 Safari。禁止使用 WKWebView 或 UIWebView 类。” dev.fitbit.com/docs/oauth2/#scope
    • @Avinashkumawat 我浏览了文档,你是对的 - OAuth2 仅适用于基于浏览器的方法。尝试使用 FitBit 文档中的授权代码授予流程:dev.fitbit.com/docs/oauth2/#authorization-code-grant-flow 以及这个 StackOverflow 答案(它是 Objective-C,但它绝对应该为您指明正确的方向):stackoverflow.com/questions/32601255/…
    • 我已经关注了授权码授予流程。我能够成功登录到 fitbit 登录过程。但是我如何在立即获得 access_token 后获得 access_token 并关闭 safari 控制器。
    • @Avinashkumawat 好的,您检查过了吗:stackoverflow.com/questions/39908599/… 有 2 个选项可以重定向回您的应用程序;第二个答案也是使用 OAuthSwift
    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2015-12-14
    • 2016-03-05
    相关资源
    最近更新 更多