OAuth1授权需要setCallbackFunction吗?

问题描述 投票:0回答:1

我正在 GAS 中实现 OAuth1 授权,截至 2024 年 10 月 31 日,我想知道 .setCallbackFunction('authCallback') 对于 OAuth1 授权方法是否确实必要。

以下是我如何设置方法来测试其必要性:

OAuth1.createService("twitter")
    ...
    .setAccessToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    .setCallbackFunction('authCallback')

我定义了一个回调函数,但是我没有看到“允许这个应用程序连接?”初次授权时有提示。我还删除了 .setCallbackFunction('authCallback') 行并重新授权,没有遇到任何错误:

const authCallback = (request: GoogleAppsScript.URL_Fetch.CallbackRequest): GoogleAppsScript.HTML.HtmlOutput => {
    const service: OAuth1.Service = getXService();
    const authorized: boolean = service.handleCallback(request);

    if (authorized) {
        return HtmlService.createHtmlOutput('success');
    } else {
        return HtmlService.createHtmlOutput('fail');
    }
};

我也尝试过使用reset()来清除授权并重新开始,但我仍然没有看到任何请求连接权限的提示。

这里有一个关于 Google Apps 脚本 (GAS) 中的 OAuth1 是否真正需要 authCallback 函数的查询。 如果您知道任何文章或资源可以阐明: 我非常感谢有关此主题的任何见解或资源!

或者,如果有其他方法可以有效地重置授权,您可以分享一下该方法吗?

另外,我删除了X的开发者工具中注册的重定向URL,授权仍然成功。

ローカルsutoreージおよびクッキーの削除

google-apps-script twitter oauth oauth-1.0a
1个回答
0
投票

是的,在这种特定情况下,3 足 oauth1.0 流需要回调 URI。具体来说,服务器将发送

oauth_verifier
令牌,这是进一步的身份验证流程所需要的。这是在 RFC5849 § 2.2

中指定的

...确保授予访问权限的资源所有者是相同的 资源所有者返回给客户端以完成该过程, 服务器必须生成一个验证码:一个不可猜测的值 通过资源所有者传递给客户端并需要完成 过程....

一旦授权,服务器不需要再次重新授权,如§ 4.15中所述

...服务器可能希望自动处理授权请求 (第 2.2 节)来自先前已授权的客户 资源所有者。

但是,在 Twitter 的具体情况下,如它的文档

中所写

用户将始终被提示授权访问您的应用程序,即使之前已授予访问权限。

因此,这种情况下应该总是出现授权提示。如果没有,那么客户端首先不会重定向到服务器。这可能意味着访问令牌不会被删除,或者您错误地假设请求已获得授权。您可以按照文档中的说明使令牌无效/重新生成以强制 Oauth 流程。

© www.soinside.com 2019 - 2024. All rights reserved.