gramex中如何实现第三方认证

How to implement third party authentication in gramex

我正在尝试构建一个简单的 gramex 应用程序。我需要从 linkedin、outlook、Github 和 gmail 授权用户。

请分享一些代码片段。

url:
  auth/github:
    pattern: /$YAMLURL/github
    handler: OAuth2
    kwargs:
      # Create app at https://code.gramener.com/admin/applications/
      client_id: 'YOUR_APP_CLIENT_ID'      # https://github.com/settings/connections/applications/
      client_secret: 'YOUR_APP_SECRET_ID'
      authorize:
        url: 'https://github.com/login/oauth/authorize'
        scope: [repo, gist, user]
      access_token:
        url: 'https://github.com/login/oauth/access_token'
        body:
          grant_type: 'authorization_code'
      user_info:
        url: 'https://api.github.com/user'
        headers:
          Authorization: 'Bearer {access_token}'
        redirect:
          query: next
          header: Referer
          url: .

这是 Github 与 OAuth2

的代码片段

https://docs.github.com/en/developers/apps/building-oauth-apps

  • client_id: 使用 OAuth2 提供程序创建应用程序以获取此 ID
  • client_secret: 使用 OAuth2 提供程序创建应用程序以获取此 ID
  • authorize:授权端点配置
    • url:授权端点URL
    • scope:一个可选的范围列表,确定您可以访问的内容
  • access_token:访问令牌端点配置
    • url:访问令牌端点URL
  • user_info:可选的用户信息API端点
    • url: API 要获取的端点 URL
    • headers:包含 HTTP headers 的可选字典以传递给用户信息 URL。例如
    • 授权:'Bearer {access_token}'。默认值:{User-Agent: Gramex/}