Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 使用OAuth。。。我不知道';我不明白。我该怎么办?_Api_Oauth - Fatal编程技术网

Api 使用OAuth。。。我不知道';我不明白。我该怎么办?

Api 使用OAuth。。。我不知道';我不明白。我该怎么办?,api,oauth,Api,Oauth,好的,所以我尝试使用(不是我的选择),但我不太理解它 我想以特定用户的身份访问API。我想我需要得到一个代币,然后以某种方式发送它。。。但这很奇怪。我阅读了文档,了解了大概念,但我不知道如何实际使用它 以下是我试图连接的网站上的数据: Consumer Key Consumer Secret Request Token URL Access Token URL Authorize Url 我必须承认我完全不懂,所以任何指针都会有所帮助。对于初学者,请仔细阅读它包含了您需要知道的所有内容(至少在

好的,所以我尝试使用(不是我的选择),但我不太理解它

我想以特定用户的身份访问API。我想我需要得到一个代币,然后以某种方式发送它。。。但这很奇怪。我阅读了文档,了解了大概念,但我不知道如何实际使用它

以下是我试图连接的网站上的数据:

Consumer Key
Consumer Secret
Request Token URL
Access Token URL
Authorize Url
我必须承认我完全不懂,所以任何指针都会有所帮助。

对于初学者,请仔细阅读它包含了您需要知道的所有内容(至少在如何将所有内容组合在一起方面-您的实现将是您为使用规范而编写的)

在高级别上,请求流的工作方式如下:

  • 从应用程序向OAuth定义的提供商的请求令牌URL发出请求(这包括签名生成请求的签名哈希并将其作为参数)
  • 提供程序发回未经授权的请求令牌-这是当前oauth请求生命周期的一次性标识符
  • 您的应用程序将用户重定向到提供商的授权URL,提供商在该URL中直接对用户进行身份验证(例如,使用登录表单,或通过检查用户浏览器中的cookie以获取提供商站点),提供商还可以要求用户为其用户帐户授予访问您的应用程序的权限
  • 假设一切顺利,提供者会将用户重定向回您第一次将用户发送到提供者进行身份验证时提供的回调URL——URL中还包括原始请求令牌,以及一个新的一次性验证代码,用于标识请求令牌已获授权
  • 然后,您的应用程序向提供商的访问令牌URL发出请求,传递请求令牌、验证码,并再次对请求进行签名
  • 然后,提供者检查您提交的请求令牌,确保用户之前已对其进行了验证,并检查验证码是否与最初发送回的验证码匹配,以及请求令牌是否已被交换为访问令牌。然后,提供者会向您发送一个全新的访问令牌和令牌密钥,供您使用
  • 现在你可以实际访问提供商的数据——你连接到他们公开的任何web服务并与之交互——但你需要签署每个请求,以证明你是谁,并且用户已经让你的应用程序代表他们与提供商合作。请求包括常用的OAuth参数(包括访问令牌),并使用使用者机密和令牌机密进行签名
您只需执行一次请求/授权/访问舞蹈即可获得访问令牌。一旦你拥有了这个令牌,你就可以保留它(甚至将它存储在你的数据库中以防用户),并在将来的任何请求中重新使用它——直到提供者确定令牌已过期,或者用户明确禁止从你的应用访问提供者站点的个人资料


(是的,我知道这很混乱,但大多数平台都有库来处理大部分繁重的工作)

大多数平台都有oauth库,它们可以将许多痛苦抽象出来。你在哪个平台上编码?将使回答更容易。我正试图让它与谷歌小工具一起工作,以便作为一个托管在小工具容器中的Javascript小工具?在这种情况下,请仔细阅读gadgets.io.makeRequest调用的文档,它为您处理了大量oauth混乱。您仍然需要以某种方式向容器注册密钥/机密,这对于每个容器都是不同的(通过电子邮件发送,或者在安装小工具时以配置web表单等)