我正在尝试在 Flutter 中使用 Okta APIs 添加登录功能。在 Okta 中,在使用用户名和密码进行身份验证后,它返回一个 sessionToken,我必须将其与授权 api 交换以获取 api_token。
这是网址的样子
https://dev-test.okta.com/oauth2/default/v1/authorize?response_type=token&scope=openid&state=TEST&nonce=TEST&client_id=asdasasdasd&redirect_uri=com.okta.dev-test:/callback&sessionToken=201111ajXZ86MYTJAqGlo9SJrGN02sTRE364aBkmnBVFLq1lX0c7TL3
我在 IOS -> com.okta.dev-test 中为我的应用程序配置了一个自定义 url 方案
因此,一旦调用被发送,它就会重定向到它发布 api_token 的 redirectUri
com.okta.dev-test:/callback#access_token=eyJraWQiOiJ0Z0EzRERrQU9UaFZfU3g4bXZtOEdFOURtXzhZSGlMZEwzaDQtRzlOQW8wIiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULkNOYkE0OC1DUHRuNVBzSDNwVHR1dHg1VDlyRVA0U0pydkNFMWkzbnJNVTAiLCJpc3MiOiJodHRwczovL2Rldi01NTEzODAub2t0YS5jb20vb2F1dGgyL2RlZmF1bHQiLCJhdWQiOiJhcGk6Ly9kZWZhdWx0IiwiaWF0IjoxNTcxNDQxNTU3LCJleHAiOjE1NzE0NDUxNTcsImNpZCI6IjBvYTFpcHZlYTVtYURCenBFMzU3IiwidWlkIjoiMDB1MWx4M2E4b1pVVFRFNFUzNTciLCJzY3AiOlsib3BlbmlkIl0sInN1YiI6InByYXZpbmFyckBnbWFpbC5jb20ifQ.S9git7PzJF0RpIxULiSAmQFWkNlhG8KvwUZm8UDR68mNgVoUnfK5rXplO3tXZVRxLyzmcFgCXgU36lWc2-hOWF9NUWvgxf7PAmfdNKjdbveMvZmqyNPuiOcDDVvV-h6C0DYgTAo_5VSMPvTI0QerVmgOQ61yYmi12UH319T7OHirsEN1RhIS1ztHLj0CQuXtmSJoX-C5Ko7Mr3PbRkY6OxmgFbyDuTtxWxqTbn5JHXbNggozs48I_nIwurQOLSq8MGAeaUBToiqCfZNhciqpBpEtmJgg4sck-oZsiyA_ZB8HYpBhTmiJNVUsK4Ln6DsI4m2n3RnRd-DuE-KJnDDm7Q&token_type=Bearer&expires_in=3600&scope=openid&state=TEST
现在,当我在 webview 中打开这个 url 时,它能够识别 url 方案并在那里发布消息。但是当我尝试使用 http.get 来调用 url 时,它会出错
Exception has occurred.
ArgumentError (Invalid argument(s): No host specified in URI com.okta.dev-test:/callback)
有没有办法从回调中获取访问令牌并使用 http get 解决这个问题?或者有没有其他方法可以在不使用 webview 的情况下实现这一点?
提前致谢