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

时间:2011-12-15 15:01:06

标签: php oauth imgur

我正在尝试列出imgur中单个用户的相册。至于我在API中读到的,有关专辑的信息只能使用authenticated API获取,这是一个非常奇怪的决定,因为您可以使用匿名API上传图像和消息但无法公开像专辑列表这样的信息。

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

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

2 个答案:

答案 0 :(得分:7)

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

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

  1. 提供商向消费者发出消费者密钥和消费者秘密。
  2. 用户向消费者发出请求。
  3. 消费者要求提供者提供请求令牌和请求秘密。这些通常存储在用户会话中。
  4. 消费者使用请求令牌将用户重定向到提供者。网上的大多数示例现在将用户的会话状态设置为“1”。
  5. 用户授权消费者使用提供商进行访问。
  6. 提供商使用(另一个?)请求令牌将用户发回消费者。
  7. 消费者将返回的请求令牌和先前发送的请求秘密发送给提供者。
  8. 提供商返回访问令牌和访问密钥。这些通常存储在用户的会话中,但它们可以是持久的,并且可能需要更好的长期存储位置。
  9. Consumer to Provider的进一步请求需要Consumer Key,Consumer Secret,Access Token和Access Secret。
  10. 当我们点击第9步时,代码中的OAuth对象具有执行请求所需的全部内容。关键的一点是, OAuth对象必须自己处理API请求,这样才能正确签署通过网络发送的数据。

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

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

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

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

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

    至于与Imgur的接口......它只是简单的香草JSON。抛开PHP的原生json_encodejson_decode,你就不会有任何问题。 API documentation非常好。

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

答案 1 :(得分:2)

我不知道Imgur。 但在oauth api和代码上有一些很好的链接.. oauth对所有服务几乎都一样..

http://oauth.net/code/

http://oauth.net/core/1.0/ 由于我的声誉不到10,我只能发布2个超链接