开发者社区 问答 正文

Web视图未加载url请求和URL显示为零

我想用LinkedIn授权url加载web视图,但是在加载之前没有创建url,说明它是0,而web视图没有显示任何特定的页面。这是传递给URLRequest的url字符串。https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=&redirect_uri=&state=linkedin1575812567&scope=r_liteprofile

下面提到的是这方面的代码。

let responseType = "code"
let state = "linkedin\(Int(NSDate().timeIntervalSince1970))"

var authorizationURL = "\(authorizationEndPoint)?"
authorizationURL += "response_type=\(responseType)&"
authorizationURL += "client_id=\(linkedInConfig.linkedInKey)&"
authorizationURL += "redirect_uri=\(linkedInConfig.redirectURL)&"
authorizationURL += "state=\(state)&"
authorizationURL += "scope=\(scope)"


print(authorizationURL)
let url = URL(string: authorizationURL)

let request = URLRequest(url: url!)
webView.load(request)

展开
收起
游客5akardh5cojhg 2019-12-09 00:02:33 538 分享 版权
阿里云 AI 助理回答

看起来你正尝试在你的应用中通过LinkedIn授权URL加载一个web视图,以便用户可以授权并返回一个授权码。遇到的问题是加载前URL似乎未正确创建或解析,导致web视图无法显示预期的登录页面。

这里有几个可能的解决步骤和检查点,以确保你的实现能够成功加载LinkedIn授权页面:

  1. 确认URL字符串无误:你提供的URL字符串看起来格式正确,但请再次仔细检查是否完全复制了正确的参数和值,特别是response_type=code部分,以及是否有其他必需的查询参数(如client_id, redirect_uri, state等),这些通常是根据LinkedIn开发者账户设置生成的。

  2. URL编码:如果URL中有特殊字符或者空格,需要确保整个URL进行了正确的URL编码。

  3. 创建NSURL或URL对象:在Swift中,你需要使用URLComponents来构建复杂的URLs,或者直接用URL(string:)初始化方法来创建URL对象。确保这个过程没有问题,比如:

    guard let url = URL(string: "https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&state=YOUR_STATE") else {
       print("Invalid URL")
       return
    }
    
  4. URLRequest配置:创建URLRequest时,确保使用上述正确创建的URL,并适当设置了请求头等信息。例如:

    var request = URLRequest(url: url)
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    
  5. 加载到WKWebView或UIWebView:确保你的web视图(假设是WKWebView)已经正确初始化,并且正在使用上述创建的URLRequest加载内容。

    webView.load(request)
    
  6. 错误处理与日志:添加适当的错误处理逻辑和打印日志,可以帮助诊断问题所在。比如在webView(_:didFail:withError:)代理方法中查看加载失败的具体原因。

  7. 网络权限与设置:确认你的应用有访问网络的权限,特别是在iOS中检查Info.plist文件中是否包含了适当的NSAppTransportSecurity设置,允许HTTPS请求。

如果以上步骤都检查无误,但问题依旧存在,建议检查LinkedIn开发者文档,确认是否有API更新或特定的实现要求,同时也可以考虑查看是否有相关的SDK可以简化OAuth流程。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答