Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SFSafariViewController和Javascript_Javascript_Ios_Sfsafariviewcontroller - Fatal编程技术网

SFSafariViewController和Javascript

SFSafariViewController和Javascript,javascript,ios,sfsafariviewcontroller,Javascript,Ios,Sfsafariviewcontroller,我正在使用IOS应用程序,在其中我在SFSafariViewController中打开登录页面。登录成功后,在该登录页面上会生成一个Json响应 我希望得到该响应并关闭SFSafariViewController 在android中,我是通过Javascript和Javascript接口实现的 我的android服务器端代码: <?php //curl initialize //Some code //Curl Execution $response = curl_exe($ch) ?&g

我正在使用IOS应用程序,在其中我在SFSafariViewController中打开登录页面。登录成功后,在该登录页面上会生成一个Json响应

我希望得到该响应并关闭SFSafariViewController

在android中,我是通过Javascript和Javascript接口实现的

我的android服务器端代码:

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

showAndroidToast(“”);
函数showAndroidToast(res){
Android.dataResponse(res);
}
在android中

dataResponse(res)是我添加到Chrome自定义选项卡()中的javascript界面

我希望我的IOS应用程序具有类似的功能。我不知道。使用SFSafariViewController是否可以实现这一点?

根据StackOverflow回答,您不能使用
SFSafariViewController下载文件
,此外,似乎没有代表根据

有了这些信息,我很确定你最安全的选择是选择
WKWebView
路线,尽管WebKit在iOS上有各种各样的限制。你可以把它作为一个起点

我个人只需调用我的登录API,创建一个本机登录表单,从而完全绕过苹果的浏览选项。我希望这有帮助

编辑

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

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

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

根据StackOverflow回答,您不能使用
SFSafariViewController下载文件。
此外,似乎没有代表根据

有了这些信息,我很确定你最安全的选择是选择
WKWebView
路线,尽管WebKit在iOS上有各种各样的限制。你可以把它作为一个起点

我个人只需调用我的登录API,创建一个本机登录表单,从而完全绕过苹果的浏览选项。我希望这有帮助

编辑

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

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


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

我正在集成fitbit API。所以根据他们的文件。“iOS应用程序可以使用SFSafariViewController类,而不是切换到Safari的应用程序。禁止使用WKWebView或UIWebView类。”@Avinashkumawat我浏览了文档,你是对的-OAuth2仅适用于基于浏览器的方法。尝试使用FitBit文档中的授权代码授权流:连同这个StackOverflow答案(这是Objective-C,但它肯定会为您指明正确的方向):我已经遵循了授权代码授权流。我能够成功登录到fitbit登录过程。但是我如何才能在立即获得访问令牌后获得访问令牌并关闭safari控制器。@Avinashkumawat好的,你检查过了吗:有两个选项可以重定向回你的应用程序;第二个答案也是使用OAuthSwiftI am集成fitbit API。所以根据他们的文件。“iOS应用程序可以使用SFSafariViewController类,而不是切换到Safari的应用程序。禁止使用WKWebView或UIWebView类。”@Avinashkumawat我浏览了文档,你是对的-OAuth2仅适用于基于浏览器的方法。尝试使用FitBit文档中的授权代码授权流:连同这个StackOverflow答案(这是Objective-C,但它肯定会为您指明正确的方向):我已经遵循了授权代码授权流。我能够成功登录到fitbit登录过程。但是我如何才能在立即获得访问令牌后获得访问令牌并关闭safari控制器。@Avinashkumawat好的,你检查过了吗:有两个选项可以重定向回你的应用程序;第二个答案也是使用OAuthSwift