我想用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)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
看起来你正尝试在你的应用中通过LinkedIn授权URL加载一个web视图,以便用户可以授权并返回一个授权码。遇到的问题是加载前URL似乎未正确创建或解析,导致web视图无法显示预期的登录页面。
这里有几个可能的解决步骤和检查点,以确保你的实现能够成功加载LinkedIn授权页面:
确认URL字符串无误:你提供的URL字符串看起来格式正确,但请再次仔细检查是否完全复制了正确的参数和值,特别是response_type=code
部分,以及是否有其他必需的查询参数(如client_id
, redirect_uri
, state
等),这些通常是根据LinkedIn开发者账户设置生成的。
URL编码:如果URL中有特殊字符或者空格,需要确保整个URL进行了正确的URL编码。
创建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
}
URLRequest配置:创建URLRequest
时,确保使用上述正确创建的URL,并适当设置了请求头等信息。例如:
var request = URLRequest(url: url)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
加载到WKWebView或UIWebView:确保你的web视图(假设是WKWebView)已经正确初始化,并且正在使用上述创建的URLRequest加载内容。
webView.load(request)
错误处理与日志:添加适当的错误处理逻辑和打印日志,可以帮助诊断问题所在。比如在webView(_:didFail:withError:)
代理方法中查看加载失败的具体原因。
网络权限与设置:确认你的应用有访问网络的权限,特别是在iOS中检查Info.plist文件中是否包含了适当的NSAppTransportSecurity设置,允许HTTPS请求。
如果以上步骤都检查无误,但问题依旧存在,建议检查LinkedIn开发者文档,确认是否有API更新或特定的实现要求,同时也可以考虑查看是否有相关的SDK可以简化OAuth流程。