我正在使用Qt编写一个OAuth2客户端,在授权的第一阶段,我使用qml WebView:在其中打开一个链接,用户在其中输入数据并确认他的操作,之后google服务调用redirect_uri
(有一个像"com.mycompany.myappname://"
这样的用户方案,我在注册OAuth2客户端时给google)。Google在此重定向中的参数中指定结果并发送授权代码(它看起来像这样:"com.mycompany.myappname://?code=4/ABCDEFG&scope=email openid&authuser=1&prompt=consent"
,其中"code"
参数用于以下授权阶段-获得access_token
)。现在,为了捕获这个重定向,我使用了我的方案所附加的Java Activity。Activity使用public static native
方法读取参数并将其发送给c++。接下来,在c++中,OAuth2授权的第二阶段通过。
:是否有可能使用Qt方法捕获redirect_uri
?为了彻底抛弃Java,从而使这个客户端跨平台于Android和IOS(在IOS中,如果我没记错的话,redirect_uri
也是使用的,是OAuth2第一阶段授权的结果)
提前感谢!
您可以像下面这个官方示例那样使用QOAuthHttpServerReplyHandler
。
那么redirect_url
可能是127.0.0.1
,然后你可以处理有效载荷/url参数从一个适当的信号从QOAuthHttpServerReplyHandler。