代码之家  ›  专栏  ›  技术社区  ›  Eino Gourdin

我可以从iPhone上的webapp(javascript)访问keychain吗?

  •  1
  • Eino Gourdin  · 技术社区  · 15 年前

    这个问题在标题中有很多;-)

    你知道是否有一个webkit api可以从iphone钥匙链中读/写吗?也就是说,我需要从一个webapp访问keychain。

    事先谢谢!

    2 回复  |  直到 15 年前
        1
  •  1
  •   Louis Gerbarg    15 年前

    不,你不能。钥匙链只能从本地应用程序获得。如果您在本机应用程序中使用uiwebview,则有多种方法可以将其桥接起来,但如果它是真正的没有本机组件的Web应用程序,则不可能实现。

        2
  •  1
  •   duncanwilcox    15 年前

    我不知道如何直接从javascript中实现这一点,与mac webview不同,uiwebview api不允许您将任意目标C代码公开为javascript函数。

    但是,您可以使用具有类似效果的解决方法来使用加载委托:

    - (BOOL)webView:(UIWebView *)webView
        shouldStartLoadWithRequest:(NSURLRequest *)request
        navigationType:(UIWebViewNavigationType)navigationType
    {
        if([[[request URL] scheme] isEqualToString:@"x-your-scheme"])
        {
            // parse the request and call the appropriate objc code here
    
            [webView stringByEvaluatingJavaScriptFromString:@"send(results);"];
            return NO;
        }
    
        return YES;
    }
    

    通过让JS代码加载一个“x-your-scheme://”URL来触发加载委托。