在Symfony2中使用OAuth 1类

阿赛特

嗨,我想将Yahoo BOSS API与Symfony2集成,但是Yahoo建议的OAuth代码类似乎不适用于现代PHP框架。

http://oauth.googlecode.com/svn/code/php/OAuth.php

/* Generic exception class
 */
class OAuthException extends Exception {
  // pass
}

class OAuthConsumer {
  public $key;
  public $secret;

  function __construct($key, $secret, $callback_url=NULL) {
    $this->key = $key;
    $this->secret = $secret;
    $this->callback_url = $callback_url;
  }

  function __toString() {
    return "OAuthConsumer[key=$this->key,secret=$this->secret]";
  }
} [...]

http://developer.yahoo.com/boss/search/boss_api_guide/codeexamples.html#oauth_php

我认为OAuth类存在名称空间问题,我需要采取哪些步骤在Symfony2中实现该类?

昏迷

1)创建一个目录,例如Project / src / OAuth

2)将类放在该目录内的单独文件中。

3)namespace OAuth;在每个OAuth类的开头添加

4)在Exception类中添加一个反斜杠(或添加use Exception;):

class OAuthException extends \Exception

5)类名避免下划线(在Laravel 4 Laravel-的OAuth2问题下划线在命名空间和类名):

abstract class OAuthSignatureMethodRSASHA1 extends OAuthSignatureMethod

class OAuthSignatureMethodPLAINTEXT extends OAuthSignatureMethod

class OAuthSignatureMethodHMACSHA1 extends OAuthSignatureMethod

6)修复OAuthUtil中的array_map调用:

return array_map(array('OAuth\OAuthUtil', 'urlencode_rfc3986'), $input);

7)最后使用它:

<?php

namespace My\PlaygroundBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

use OAuth\OAuthConsumer;
use OAuth\OAuthRequest;
use OAuth\OAuthSignatureMethodHMACSHA1;
use OAuth\OAuthUtil;

class DefaultController extends Controller
{
    /**
     * @Route("/")
     * @Template()
     */
    public function indexAction()
    {
        $cc_key  = "your consumer key here";
        $cc_secret = "your consumer secret here";
        $url = "http://yboss.yahooapis.com/ysearch/news,web,images";
        $args = array();
        $args["q"] = "yahoo";
        $args["format"] = "json";

        $consumer = new OAuthConsumer($cc_key, $cc_secret);
        $request = OAuthRequest::from_consumer_and_token($consumer, NULL,"GET", $url, $args);
        $request->sign_request(new OAuthSignatureMethodHMACSHA1(), $consumer, NULL);
        $url = sprintf("%s?%s", $url, OAuthUtil::build_http_query($args));
        $ch = curl_init();
        $headers = array($request->to_header());
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $rsp = curl_exec($ch);
        $results = json_decode($rsp);

        return array(
            'results' => $results
        );
    }
}

因此,这些就是我所遵循的步骤,并且有效。您可以从这里获取课程:https : //github.com/coma/OAuthSOSample

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Symfony2中使用OAuth 1类

来自分类Dev

在Symfony2中使用字符串创建PHP类实例

来自分类Dev

symfony2 doctrine2:删除在过去的迁移中使用的实体类

来自分类Dev

Symfony2中的类继承

来自分类Dev

Symfony2中的类继承

来自分类Dev

在自定义类(Symfony2)中使用参数值

来自分类Dev

使用symfony2 +教义+形式更新db中的类对象的正确方法?

来自分类Dev

在哪里可以使用Symfony2中的Configratuion类

来自分类Dev

Symfony2:如何使用我自己的类覆盖捆绑中的单个服务?

来自分类Dev

覆盖Symfony2中的供应商类

来自分类Dev

symfony2中的每个类都需要服务吗?

来自分类Dev

symfony2:找不到AppKernel中包含的FOSElasticaBundle类

来自分类Dev

无法在FormType Symfony2中分配CSS类

来自分类Dev

如何从Symfony2的抽象类中获取教义?

来自分类Dev

Symfony2中的自定义存储库类

来自分类Dev

symfony2中的每个类都需要服务吗?

来自分类Dev

Symfony2:使用OpCache缓存“类加载器”

来自分类Dev

Symfony2:使用OpCache缓存“类加载器”

来自分类Dev

Symfony2:使用OPcache进行编译的类

来自分类Dev

在继承的类中使用(1:n)在gfortran中工作异常

来自分类Dev

在javascript中增加+1类

来自分类Dev

Symfony2类加载器loadClass()

来自分类Dev

Symfony2模拟类返回NULL

来自分类Dev

Symfony2表单小部件类

来自分类Dev

Symfony2服务类。函数调用

来自分类Dev

在Elasticsearch和Symfony2中使用日期范围

来自分类Dev

如何在symfony2中使用图形?

来自分类Dev

在服务Symfony2中使用主义

来自分类Dev

在Symfony2中使用Twig删除URL参数