我的应用程序将发布、编辑和删除用户谷歌日历上的事件。我正在配置OAuth以实现这一点。其想法是,注册后,用户将能够进入他们的设置,并同意将我的应用程序连接到他们的谷歌日历。然后,我将能够在数据库中存储oauth令牌和刷新令牌,并在创建/编辑/删除用户日历上的事件时使用它们。
无论如何,问题是我选择我的帐户:
然后我通过单击“允许”提供同意:
这就是它变得奇怪的地方:在幕后,谷歌日历API报告了一个403禁止的错误。
%Ueberauth.Failure{errors: [%Ueberauth.Failure.Error{message: 403,
message_key: "OAuth2"}], provider: :google,
strategy: Ueberauth.Strategy.Google}
我的UEBERATH配置:
config :ueberauth, Ueberauth,
providers: [
google: {Ueberauth.Strategy.Google, [default_scope: "https://www.googleapis.com/auth/calendar", approval_prompt: "force", access_type: "offline"]}
]
我提出的请求:
def callback(%{assigns: %{ueberauth_failure: fail}} = conn, _params) do
IO.inspect fail
conn
|> put_flash(:error, "Failed to authenticate.")
|> redirect(to: "/")
end
def callback(%{assigns: %{ueberauth_auth: auth}} = conn, _params) do
IO.inspect auth
conn
|> put_flash(:success, "Connected to Google.")
|> redirect(to: "/")
end
第一个回调
函数是匹配的函数(因为它失败了)。
但是,当我转到我的Google帐户时,我可以看到该应用程序已被授予权限:
我正在提供正确的client\u id和client\u secret。此外,我在Google API控制台中创建了一个服务帐户,并与该帐户共享了我的日历:
我还需要做什么?
编辑:更多信息——我可以通过我的代码(这是样板Ueberauth_Google)授予对所有其他谷歌模块的访问权限。例如,如果我以电子邮件为范围提出请求,它会起作用,我会从谷歌获得auth_token。只有谷歌日历给出了403,这让我相信是有一些特定的东西导致了它。
编辑2:我查看了Google Calendar API的错误处理部分,其中列出的403个错误都不适用于我:
编辑3:我创建了一个全新的谷歌账户,并将其日历与我的谷歌服务账户共享。但那一个给出了相同的错误。
终于弄明白了。
<代码>https://www.googleapis.com/auth/calendar范围本身是不够的。还需要添加<代码>https://www.googleapis.com/auth/userinfo.profile到范围。
本文向大家介绍oauth 授权码授予,包括了oauth 授权码授予的使用技巧和注意事项,需要的朋友参考一下 示例 第1步 第2步 资源
在jHipster中是否可以实现这一特定功能,以使身份验证能够从浏览器或应用程序(不在jHipster服务器上运行)工作?
因此,如果我以角色的身份登录,我就可以很好地访问这个视图。 但是,让我们做一个小的改变,重写一个方法... 这会给我一个...我不明白为什么。 为什么?!! 希望能得到一些帮助来解决这个问题。
我在node.js中通过以下路径生成访问令牌 https://login.microsoftonline.com/{租户-ID}/oauth2/v2.0/token 之后,我得到access_token,但没有范围参数。 当我尝试点击添加了授权标头的 https://graph.microsoft.com/v1.0/users?$filter=startswith(给定名称,“J”)网址时,我得到
我收到了明显臭名昭著的apache 2禁止错误#403,我尝试遵循有关该主题的指南,但似乎都不起作用。我使用的是Ubuntu Server和Apache 2.4.41 我的网站结构类似于/var/www/html/index.html 我的apache2.conf[/etc/apache2/apache2.conf]: 我的vhosts.conf[/etc/apache2/站点可用/000-def
我尝试设置Firebase身份验证,在localhost上它也起作用了。但是当我在Firebase上获得应用程序后,我会得到错误。 我已经在Firebase看过了,域是白名单。 我使用Google登录firebase的代码: 以下是完整的错误消息: