我正在尝试调整Qt网络授权OAuth2 example for Reddit以使用Azure AD。 我去了https://portal.azure.com/ - > Azure Active Directory - >然后,应用程序注册点击“新申请注册”并输入:
我将生成的应用程序ID复制到应用程序中,然后从Authorization Code Grant Flow获取URI:
第一部分似乎有效;网页打开,并要求我验证登录。但是令牌请求似乎失败了。我的记录显示:
AzureWrapper::grant()+
setModifyParametersFunction(): stage = RequestingAuthorization
AzureWrapper::grant()-
statusChanged(): status = TemporaryCredentialsReceived
setModifyParametersFunction(): stage = RequestingAccessToken
qt.networkauth.oauth2: Unexpected call
qt.networkauth.replyhandler: Error transferring https://login.microsoftonline.com/common/oauth2/token - server replied: Bad Request
我做错了什么?
答案 0 :(得分:0)
Azure AD在授权代码请求中或在访问令牌请求中都需要要使用的目标Web API(安全资源)的App ID URI。 (请参见https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code)
您可以像这样在授权代码请求中添加此额外的资源参数:
oauth2.setModifyParametersFunction([](QAbstractOAuth::Stage stage, QVariantMap* parameters) {
if (stage == QAbstractOAuth::Stage::RequestingAuthorization) {
parameters->insert("resource", "<App ID URI>");
}
});