Python Django /w Microsoft Graphs - 我不断收到值错误“auth_code_flow 中缺少状态”

alb*_*trw 7 python django microsoft-graph-api

Python Django /w Microsoft Graphs -

我正在按照此 Microsoft 教程使用 Microsoft Graph 构建 Django 应用程序(在我现有的 Django Web 应用程序上使用它),但我遇到了身份验证问题:https: //learn.microsoft.com/en-us/graph/tutorials /Python

我正在执行“添加 Azure AD 身份验证”步骤,在实施后,我点击登录按钮并输入凭据...并且我不断收到值错误“auth_code_flow 中缺少状态”。

“回调”方法只是使其达到 result=get_token_from_code(request) 然后失败。

这是 get_token_from_code 方法:

def get_token_from_code(request):
  cache = load_cache(request)
  auth_app = get_msal_app(cache)

  # Get the flow saved in session
  flow = request.session.pop('auth_flow', {})

  result = auth_app.acquire_token_by_auth_code_flow(flow, request.GET)
  save_cache(request, cache)

  return result
Run Code Online (Sandbox Code Playgroud)

我想做的是最终从我的网络应用程序在线访问 Excel。

任何帮助是极大的赞赏!

new*_*000 10

我刚刚遇到这个问题并解决了。这是以下两件事之一:

  1. 您从 127.0.0.1:8000 开始,然后当您重定向时,您位于 localhost:8000,这是一个不同的域。不会记住从一个域到另一个域的会话。解决方案是从 localhost:8000 开始,以便会话在登录后持续存在。

  2. 您的浏览器正在使用超严格的 cookie 设置。Microsoft Edge 在 localhost 和 127.0.0.1 上似乎默认采用此模式。地址栏内或附近有一个锁或盾牌图标,可让您放松对 Cookie 设置的限制。

尝试其中一种或两种方法,您应该会成功。


小智 7

我是一名初学者编码器,所以我很确定我只是规避了该错误。但是用 http://localhost:8000/# 替换网站 URL 并重新运行它以某种方式解决了该错误。也许这会有一些用处。