我试图使用StackExchange API的隐式身份验证,因此我需要将用户发送到https://www.stackexchange.com/oauth?client_id=...&scope=...&redirect_uri=...
(使用实际值而不是'...')。很简单,只需在Interface Builder中拖出一个WebView,然后执行WebFrameLoadDelegate
协议中的-webView:didFinishLoadForFrame:
即可跟踪我们是否已经在redirect_uri
。 那就像我想要的那样工作。但是WebView内部没有。从stackexchange.com/oauth
错误页面:在Mac OS X中使用WebView查看HTTPS页面
Application Login Failure
An error occurred while login into an application.
Error Details:
error: invalid_request
error description: OAuth request must be over HTTPS
但我开始URL以https://
:
- (void)awakeFromNib {
NSString *oauthAddress = @"https://www.stackexchange.com/oauth?client_id=...&scope=...&redirect_uri=...";
[loginWebView setMainFrameURL:oauthAddress];
}
我找不到说你必须做别的事情启用HTTPS在标准的WebView任何源。
它是由内部的WebView引起的:在-webView:didFinishLoadForFrame:
我NSLog()
“当前的URL:
- (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)webFrame {
NSString *currentURL = [[[[webFrame dataSource] request] URL] absoluteString];
NSLog(@"-webView:didStartProvisionalLoadForFrame:");
NSLog(@"Current URL: %@", currentURL);
if ([currentURL hasPrefix:@"https://stackexchange.com/oauth/login_success"]) {
NSLog(@"We did login!");
}
}
输出:
2013-03-05 15:31:55.493 MacOverflow[2164:a0f] -webView:didStartProvisionalLoadForFrame:
2013-03-05 15:31:55.495 MacOverflow[2164:a0f] Current URL: http://stackexchange.com/oauth?client_id=...scope=...&redirect_uri=...
什么? WebKit从URL的协议部分删除了's'!如何阻止WebKit这样做?我在WebView上搜索了Apple的文档(用Cmd + f)'https'(0个匹配),'ssl'(0个匹配),甚至'安全'(再次匹配0个)。我有点卡在这里,但它一定是可能的。提供这样一个复杂的浏览器控制将是荒谬的,但迫使开发人员编写一个支持https
(现在很常见的IMO)的副本!
如何使用WebKit的WebView创建HTTPS请求?
这似乎与Webkit没有关系,而是与堆栈交换有关。 它可以很好地与任何其他网站(尝试与Facebook和检查URL)。 – 2013-03-05 17:56:03