Chrome 扩展程序的 Twitter OAuth 回调 URL

ndr*_*zet 5 twitter google-chrome oauth

我正在尝试开发一个 Chrome 扩展程序,人们可以使用他们的 Twitter 帐户(使用 OAuth 1.0A)登录。

到目前为止,我尚未在 Twitter 应用程序设置中提供回调 URL,因此用户会返回一个 PIN,以便在扩展程序上输入以完成授权过程。但我不想在扩展中实现最终的 PIN 验证步骤。

相反,我希望一旦用户被重定向到 Twitter 并授权该应用程序访问他的帐户,他就会自动登录到该扩展程序并可以使用它来发布推文。

我知道我应该定义一个回调 URL,但我不知道该使用什么。我已经挣扎了好几天,期间我尝试了多种方法(例如 chrome://extensions/extension_id/ 但 Twitter 不接受它)。我没能找到解决方案。

您知道回调 URL 应该是什么吗?什么应该包含该 URL 指向的文件?

小智 1

我知道这已经非常古老了,但我也遇到了同样的问题,并最终弄清楚了如何做到这一点,所以希望这可以帮助其他找到此问题的人。

在 Twitter 应用程序配置中,您必须向域添加回调 URL。然后,在您的 chrome 扩展中,您必须有一个注入同一域的内容脚本。内容脚本将具有一些逻辑,用于解析身份验证令牌的查询字符串并将其作为消息发送到后台脚本。然后,在后台脚本中,您可以使用这些令牌来获取实际的 oauth 令牌,然后将其保存到本地存储或 chrome.storage。

这是一个简短的例子:

  1. 在您的manifest.json中,确保您的内容脚本与您在Twitter应用程序设置回调URL中输入的域相匹配:

    "content_scripts": [{
        "matches": ["https://andyjiang.com/*"],
        "js": ["js/session.js"]
    }]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后,在你的js/session.js文件中,有这样的逻辑:

    chrome.runtime.sendMessage({type: 'auth', session: 
    window.location.search.substr(1)}, function(response) {
        window.open('', '_self', '');
        window.close();
    });
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在后台脚本中,有一些逻辑来侦听消息、获取令牌,并使用 Twitter 的 API 进行 oauth 进程的第三阶段,最终获取 oauth 令牌和 oauth 令牌机密,然后您可以将其保存在 localStorage 或 chrome 中。贮存。

希望有帮助。如果您想尝试一下,这里是示例代码。

https://github.com/lambtron/chrome-extension-twitter-oauth-example