Omniauth 2.0返回零值(Twitter API)



一些上下文:我是软件开发的新手,这是我在stackoverflow上的第一篇文章,所以如果我在如何完成这项工作方面有问题,请告诉我。

在GoRails教程(Rails for Beginners(中发现问题。我在stackoverflow和其他在线资源上搜索了几个小时,多次修改我的代码,几乎完全放弃了的希望

总结问题:

通过Twitter API v2,使用Omniauth 2.0连接Twitter帐户,我的Omniauth返回哈希仅包含零值

我不确定Twitter是否因为我的Essential访问级别而故意不提供这些数据,或者问题是我的代码中的错误

当我尝试连接时,Twitter的响应如下(排除了第一位,因为它包括API密钥(:

@response=#<Net::HTTPForbidden 403 Forbidden readbody=true>> raw_info=#<OmniAuth::AuthHash errors=#<Hashie::Array [#<OmniAuth::AuthHash code=453 message="You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. You can learn more here: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve">]>>> info=#<OmniAuth::AuthHash::InfoHash description=nil email=nil image=nil location=nil name=nil nickname=nil urls=#<OmniAuth::AuthHash Twitter="https://twitter.com/" Website=nil>> provider="twitter" uid="1369880016"

凭借我有限的知识,我相信我正在寻找的哈希这一部分:

<OmniAuth::AuthHash::InfoHash description=nil email=nil image=nil location=nil name=nil nickname=nil

看起来Twitter为我的请求返回了零值(这是由于访问级别还是我的错误(

在我的OmniauthCallbacksController中,我有:

def twitter
Rails.logger.info auth
Current.user.twitter_accounts.create(
name: auth.info.name,
username: auth.info.nickname,
image: auth.info.image,
token: auth.credentials.token,
secret: auth.credentials.secret,
)
redirect_to twitter_accounts_path, notice: "Successfully connected your account"
end
def auth
request.env['omniauth.auth']
end

描述您尝试过的内容:

  • 更改Twitter OmniAuth设置以接受v1.1和/或v2.0
  • 重新发行API令牌
  • 在我的应用程序和推特中创建了新帐户
  • 直接从GitHub复制源代码
  • 使用相关stackoverflow帖子中的代码进行实验

这是我的代码中的错误,还是由于Twitter没有返回值

我现在陷入僵局。我可以继续教程,但我不想成为一个半吊子的开发人员,所以我决心理解我做错了什么。如果你能,请帮忙

OmniOAuth仍在使用Twitter API OAuth 1.0A,根据错误消息,它可能正在尝试调用/1.1/account/verify_credentials作为身份验证流的一部分。为了使用该端点,您的项目和应用程序需要具有提升的访问权限(Essential访问权限此时仅提供对v2 Twitter API的访问权限(。

如果您为了访问较旧的端点而获得提升的访问权限,这应该会有所帮助。

最新更新