Imgur,使用PHP和OAuth获取用户的相册

Jos*_*ino 3 php oauth imgur

我正试图在imgur中列出来自单个用户的专辑.至于我在API中读到的,有关专辑的信息只能使用经过身份验证的API获取,这是一个非常奇怪的决定,因为您可以使用匿名API上传图像和消息,但无法获取列表等公共信息专辑

无论如何,看起来auth API使用OAuth.我一直试图找到一种让它运转的方法,没有运气.原因是我的托管不提供官方PHP的oauth扩展,所以我需要一个外部库.

你有任何与imgur和oauth合作的例子吗?

Cha*_*les 7

有一些很好的纯PHP OAuth选项值得一提.为了理解他们的好部分和坏部分,了解OAuth的工作原理将是最重要的.让我们来复习.

在此示例中,Provider是Imgur,Consumer是您的代码,User是用户.

  1. 提供者向消费者发布消费者密钥和消费者秘密.
  2. 用户向消费者发出请求.
  3. 消费者向提供者请求请求令牌和请求秘密.这些通常存储在用户的会话中.
  4. 消费者使用请求令牌将用户重定向到提供者.网上的大多数示例现在将用户的会话状态设置为"1".
  5. 用户授权消费者与提供商进行访问.
  6. 提供者使用(另一个?)请求令牌将用户发送回消费者.
  7. 消费者将返回的请求令牌和先前发送的请求秘密发送给提供者.
  8. 提供者返回访问令牌和访问密钥.这些通常存储在用户的会话中,但它们可以持久,并且可能需要更好的长期存储位置.
  9. 消费者对提供者的进一步请求需要消费者密钥,消费者秘密,访问令牌和访问密钥.

当我们点击步骤9时,代码中的OAuth对象具有执行请求所需的全部内容.关键的关键部分是OAuth对象必须自己处理API请求,以便它可以正确签署通过线路发送的数据.

有两个很好的选择供您选择,有些不太好.让我们回顾一下好的:

首先是PEAR的HTTP_OAuth,它使用HTTP_Request2作为底层HTTP库.虽然它工作正常,但HTTP_OAuth_Consumer_Request充当请求对象的网关,但不从它继承.这意味着您无法对HTTP_Request2执行任何操作.这可能很烦人.

其次,有Zend Framework的Zend_Oauth,它使用Zend_Http_Client作为底层HTTP库.虽然它是更大的Zend框架的一部分,但这两个组件在很大程度上是独立的,并且可以很好地与其他框架一起使用......或者没有框架.与PEAR库不同,Zend_Oauth_Consumer实际上返回一个派生自Zend_Http_Client的类.这并不是说它不会做它自己奇怪的事情.它不是要求你在会话中隐藏令牌和秘密,而是要求你序列化一个状态令牌对象,它包含令牌和秘密.它完成了工作,但这很奇怪.

忽略疣,两者都是很好的选择.它们都是在自由开源许可下发布的,因此将它们与您的代码捆绑在一起就不会有问题.*

在不太好的类别中,有oauth-php.我不在乎图书馆工作,太多的分心和一些让我烦恼的小事.还有PECL的oauth扩展.虽然它使用CURL,但是不可能从中获取CURL句柄来制作你自己的理智请求.你还提到你没有安装它,这就是为什么它在不太好的类别中.

至于与Imgur的接口......它只是简单的香草JSON.抛开PHP的本机json_encode,json_decode你根本不会有任何问题.该API文档是相当该死良好.

*我不是律师,你可能想咨询一个.
(这个答案的部分内容是逐字逐句复制的,因为我开始编写一个不完整的 Imgur API库.不幸的是我没有实现任何关于专辑的内容,否则我只是链接它.一旦它做了我需要它做的事情,我停了.抱歉.)