【问题标题】:Use Laravel 7 HTTP client and OAuth Subscriber使用 Laravel 7 HTTP 客户端和 OAuth 订阅者
【发布时间】:2020-07-20 05:16:14
【问题描述】:

我实际上是在使用 Guzzle 和 Guzzle OAuth Subscriber https://github.com/guzzle/oauth-subscriber 通过 Twitter api 发布推文。

我的代码如下所示:

    $stack = HandlerStack::create();

    $middleware = new Oauth1([
        'consumer_key'    => config('services.twitter.client_id'),
        'consumer_secret' => config('services.twitter.client_secret'),
        'token'           => $this->user->twitter->token,
        'token_secret'    => $this->user->twitter->token_secret,
    ]);

    $stack->push($middleware);

    $client = new Client([
        'base_uri' => 'https://api.twitter.com/1.1/',
        'handler' => $stack,
        'auth' => 'oauth',
    ]);

    $status = 'My tweet and the link to tweet...';

    $res = $client->post('https://api.twitter.com/1.1/statuses/update.json', [
        'query'=>[
            'status'=>$status,
            'possibly_sensitive'=>false,
        ]
    ]);

此代码有效,但我不知道如何将 OAuth 订阅者与 Laravel 7 HTTP 客户端一起使用来完成相同的工作。

知道怎么做吗(如果可能的话)?

【问题讨论】:

    标签: laravel http oauth guzzle


    【解决方案1】:

    您应该使用withMiddleware 函数将$middleware 压入堆栈。 您还需要使用withOptions 来设置'auth' => 'oauth'

    【讨论】:

    • 你有例子吗?因为这不起作用:``` $stack = HandlerStack::create(); $middleware = new Oauth1([ 'consumer_key' => config('api.test.consumer_key'), 'consumer_secret' => config('api.test.consumer_secret'), 'token' => config('api.test .token'), 'token_secret' => config('api.test.token_secret') ]); $stack->push($middleware); $this->http = Http::withMiddleware($middleware) ->withOptions([ 'auth' => 'oauth', 'base_uri' => config('api.test.url'), 'handler' => $堆 ]); ```
    【解决方案2】:

    你有一个例子导致这不起作用 => 401 Unauthorized :

    $stack = HandlerStack::create();
    
    $middleware = new Oauth1([
        'consumer_key' => config('api.test.consumer_key'),
        'consumer_secret' => config('api.test.consumer_secret'),
        'token'  => config('api.test.token'),
        'token_secret' => config('api.test.token_secret')
    ]);
    
    $stack->push($middleware);
    
    $this->http = Http::withMiddleware($middleware)
        ->withOptions([
            'auth' => 'oauth',
            'base_uri' => config('api.test.url'),
            'handler' => $stack
    ]);
    

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 2011-08-04
      • 2019-10-27
      • 2020-04-26
      • 2019-04-28
      相关资源
      最近更新 更多