授权回调URL GitHub

时间:2018-07-10 17:36:22

标签: ios swift authentication url github

我正在开始iOS开发。我创建一个使用GitHub授权的应用程序。在GitHub开发人员程序中注册新的OAuth应用程序时,必须输入授权回调URL。但是我的应用程序没有任何网站。我需要在此字段中指定什么?

2 个答案:

答案 0 :(得分:1)

您可以使用深层链接。

您可以详细了解here

深层链接将尝试打开应用程序或将其重定向到它。网络浏览器或SFAuthenticationSession将关闭浏览器并调用完成处理程序,您可以在其中检查响应代码而无需对深层链接进行任何实现。

要在应用程序中添加深层链接,请执行以下操作:

  • 在Xcode导航器中选择项目。
  • 然后选择要向其添加深层链接的目标。
  • 从顶部栏中选择信息
  • 在底部打开URL类型
  • 为方案添加名称

add deeplink

在为oauth生成URL时,您可以传递任何您想要的信息,在此示例中,我只是传递登录信息:

func getAuthenticateURL() -> URL {

    var urlComponent = URLComponents(string: "https://github.com/login/oauth/authorize")!

    var queryItems =  urlComponent.queryItems ?? []

    queryItems.append(URLQueryItem(name: "client_id", value: "YOUR_CLIENT_ID_HERE"))
    queryItems.append(URLQueryItem(name: "redirect_uri", value: "APP_SCHEME_GOES_HERE://login"))

    urlComponent.queryItems = queryItems

    return urlComponent.url!
}

然后在需要登录时执行此操作:

import SafariServices

var authSession: SFAuthenticationSession?

func authenticate(with url: URL, completion: @escaping ((_ token: String?, _ error: Error?) -> Void)) {

    authSession?.cancel()

    authSession = SFAuthenticationSession(url: url, callbackURLScheme: nil, completionHandler: { url, error in

        //get the token and call the completion handler
    })

    authSession?.start()
}

或在iOS 12上以相同方式使用ASWebAuthenticationSession

答案 1 :(得分:0)

使用SFAuthenticationSession,您可以执行以下操作。在您的应用上添加 URLType

enter image description here

然后在您应用的GitHub'开发人员设置'中,添加授权回调URL ,如下所示:

enter image description here

这样,在您登录并授权后,Git Hub将回叫 //您的应用名称,而Safari会将其重定向回您的应用,以完成流程。