我正在为我们的应用程序使用Python Social Auth,最近我创建了一个双范围Google登录.这个想法是允许用户使用谷歌登录,然后升级范围以允许我们阅读他们的电子邮件并通过它们解析相关内容.我按照文档中概述的建议:http://psa.matiasaguirre.net/docs/use_cases.html#multiple-scopes-per-provider创建了一个新的后端:
from social.backends.google import GoogleOAuth2
class GoogleEmailOAuth2(GoogleOAuth2):
name = 'google-email'
Run Code Online (Sandbox Code Playgroud)
然后将必要的部分添加到我们的settings.py(以及所有必需的URL):
SOCIAL_AUTH_GOOGLE_EMAIL_SCOPE = ['email', 'profile', 'https://www.googleapis.com/auth/plus.profile.emails.read']
SOCIAL_AUTH_GOOGLE_EMAIL_AUTH_EXTRA_ARGUMENTS = {'access_type': 'offline'}
SOCIAL_AUTH_GOOGLE_EMAIL_EXTRA_DATA = [
('id', 'user_id'),
('email', 'user_email'),
('refresh_token', 'refresh_token', True),
('expires_in', 'expires'),
('token_type', 'token_type', True)
]
Run Code Online (Sandbox Code Playgroud)
一切似乎都有效,除了创建的UserSocialAuth对象不包含extra_data中的任何内容...我使用了相同的范围来处理正常的SOCIAL_AUTH_GOOGLE_OAUTH2_EXTRA_DATA并且它完美地运行,但仍然是自定义后端的nada.非常感谢您提出任何建议.
编辑:尝试了几种不同的方法,但仍然无法设置数据.
我正在使用google api ruby 客户端将 webhook 添加到日历中,但我遇到了Google::Apis::ClientError: pushWebhookBadDomain.
我已经设置了一个 ngrok 实例并在网站管理员工具上验证了它,以便我可以将其作为允许的域添加到处理所有日历身份验证等的项目中。我找不到任何对该特定错误的引用,所以我'我想知道使用 ngrok 是否有什么奇怪的地方,以及是否有更好的方法可以在本地测试 webhook。
这是为了防止我做任何愚蠢的事情而进行的通话(为了清晰起见,进行了精简):
require 'google/apis/calendar_v3'
client = Google::Apis::CalendarV3::CalendarService.new
authorization = Signet::OAuth2::Client.new(
:authorization_uri =>
'https://accounts.google.com/o/oauth2/auth',
:token_credential_uri =>
'https://accounts.google.com/o/oauth2/token'
)
authorization.client_id = ENV['GOOGLE_CLIENT_ID']
authorization.client_secret = ENV['GOOGLE_CLIENT_SECRET']
authorization.grant_type = 'refresh_token'
authorization.refresh_token = refresh_token
authorization.fetch_access_token!
client.authorization = authorization
channel = Google::Apis::CalendarV3::Channel.new(address: success_callback_url, id: channel_id, type: "web_hook")
binding.pry
webhook = client.watch_event('primary', channel, single_events: true, time_min: Time.now.iso8601)
Run Code Online (Sandbox Code Playgroud) ruby-on-rails google-calendar-api google-api-client google-api-ruby-client