gpt4 book ai didi

ios - 使用 webView 在 iOS 中集成 Instagram 失败

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:24 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 webView 进行 Instagram 身份验证。首先它显示 Instagram 登录屏幕,成功登录后我正在获取 accessToken,然后我使用 accessToken 获取其他详细信息。

这是我在 viewDidLoad 中调用的加载请求方法

func loadrequest(){

let authURL = String(format: "%@?client_id=%@&redirect_uri=%@&response_type=token&scope=%@", arguments: [INSTAGRAM_API.INSTAGRAM_AUTHURL,INSTAGRAM_API.INSTAGRAM_CLIENT_ID,INSTAGRAM_API.INSTAGRAM_REDIRECT_URI, INSTAGRAM_API.INSTAGRAM_SCOPE ])
let urlRequest = URLRequest.init(url: URL.init(string: authURL)!)
instaWebview.loadRequest(urlRequest)

}

这是我调用 checkRequestForcallBackURL 方法的 webViewDelegate 方法

  func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
return checkRequestForcallBackURL(request: request)
}

在这个方法中,我正在检查我是否正在获取我的访问 token

   func checkRequestForcallBackURL(request : URLRequest) ->Bool{

let requestURLString = (request.url?.absoluteString)! as String

if requestURLString.hasPrefix(INSTAGRAM_API.INSTAGRAM_REDIRECT_URI) {
let range: Range<String.Index> = requestURLString.range(of: "#access_token=")!

handleAuth(authToken: requestURLString.substring(from: range.upperBound))
return false;
}

return true
}

现在登录时询问安全码,在提供安全码后,它会将我重定向到我不想要的 Instagram 应用程序。我不知道如何进一步进行

最佳答案

我在我的一个应用程序中实现了 Instagram 登录。我所做的是。要获取 instagram token ,只需使用 webview 显示新的 ViewController 并加载 instagram 登录页面。

let authURL = String(format: "%@?client_id=%@&redirect_uri=%@&response_type=token&scope=%@&DEBUG=True", arguments: [INSTAGRAM_IDS.INSTAGRAM_AUTHURL,INSTAGRAM_IDS.INSTAGRAM_CLIENT_ID,INSTAGRAM_IDS.INSTAGRAM_REDIRECT_URI, INSTAGRAM_IDS.INSTAGRAM_SCOPE ])
let urlRequest = URLRequest.init(url: URL.init(string: authURL)!)
web_instaView.loadRequest(urlRequest)

然后在webview委托(delegate)方法中

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
return checkRequestForCallbackURL(request: request)
}


func checkRequestForCallbackURL(request: URLRequest) -> Bool {

let requestURLString = (request.url?.absoluteString)! as String

if requestURLString.hasPrefix(INSTAGRAM_IDS.INSTAGRAM_REDIRECT_URI) {
let range: Range<String.Index> = requestURLString.range(of: "#access_token=")!
handleAuth(authToken: requestURLString.substring(from: range.upperBound))
return false;
}
return true
}

func handleAuth(authToken: String) {
print("Instagram authentication token ==", authToken)
INSTAGRAM_IDS.INSTAGRAM_USER_TOCKEN = authToken
UserDefaults.standard.setValue(INSTAGRAM_IDS.INSTAGRAM_USER_TOCKEN, forKey: "INSTAGRAM_USER_TOCKEN")
NotificationCenter.default.post(name: NSNotification.Name("instaLoginDone"), object: nil)
self.dismiss(animated: true, completion: nil)
}

在获得 instagram token 后,我简单地关闭了 ViewController 并在本地保存 token 。比在后台模式下获取用户信息并显示加载程序或任何你想要的。

希望对您有所帮助。 :)

关于ios - 使用 webView 在 iOS 中集成 Instagram 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48145916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com