有没有办法覆盖CONSUMER_KEY和CONSUMER_SECRET

时间:2015-12-08 10:35:53

标签: php api laravel twitter

我正在使用带有thujohn / twitter软件包的laravel。 但我希望无论何时注册任何使用,他们都会向我们提供CONSUMER_KEY和CONSUMER_SECRET,我们将使用该详细信息发布推文,收藏推文等。

但是在thujohn / twitter包中,CONSUMER_KEY和CONSUMER_SECRET设置了一次,将用于所有用户,我想使用每个注册用户将使用他们自己的消费者详细信息。

任何人都知道相同的解决方案

1 个答案:

答案 0 :(得分:0)

查看源代码,您有重新配置方法:

/**
 * Set new config values for the OAuth class like different tokens.
 *
 * @param Array $config An array containing the values that should be overwritten.
 *
 * @return void
 */
public function reconfig($config)
{
    // The consumer key and secret must always be included when reconfiguring
    $config = array_merge($this->parent_config, $config);
    parent::reconfigure($config);
    return $this;
}

所以你可以传递一个包含你想要的配置的数组:

Twitter::reconfigure([
    'consumer_key'               => '',
    'consumer_secret'            => '',
    'token'                      => '',
    'secret'                     => '',
]);

然后将这个配置传递给父,这​​是另一个名为tmhOAuth的库,其中包含以下代码:

public function reconfigure($config=array()) {
    // default configuration options
    $this->config = array_merge(
        array(
            // leave 'user_agent' blank for default, otherwise set this to
            // something that clearly identifies your app
            'user_agent'                 => '',
            'host'                       => 'api.twitter.com',
            'method'                     => 'GET',
            'consumer_key'               => '',
            'consumer_secret'            => '',
            'token'                      => '',
            'secret'                     => '',
            // OAuth2 bearer token. This should already be URL encoded
            'bearer'                     => '',
            // oauth signing variables that are not dynamic
            'oauth_version'              => '1.0',
            'oauth_signature_method'     => 'HMAC-SHA1',
            // you probably don't want to change any of these curl values
            'curl_http_version'          => CURL_HTTP_VERSION_1_1,
            'curl_connecttimeout'        => 30,
            'curl_timeout'               => 10,
            // for security this should always be set to 2.
            'curl_ssl_verifyhost'        => 2,
            // for security this should always be set to true.
            'curl_ssl_verifypeer'        => true,
            // for security this should always be set to true.
            'use_ssl'                    => true,
            // you can get the latest cacert.pem from here http://curl.haxx.se/ca/cacert.pem
            // if you're getting HTTP 0 responses, check cacert.pem exists and is readable
            // without it curl won't be able to create an SSL connection
            'curl_cainfo'                => __DIR__ . DIRECTORY_SEPARATOR . 'cacert.pem',
            'curl_capath'                => __DIR__,
            // in some cases (very very odd ones) the SSL version must be set manually.
            // unless you know why your are changing this, you should leave it as false
            // to allow PHP to determine the value for this setting itself.
            'curl_sslversion'            => false,
            'curl_followlocation'        => false, // whether to follow redirects or not
            // support for proxy servers
            'curl_proxy'                 => false, // really you don't want to use this if you are using streaming
            'curl_proxyuserpwd'          => false, // format username:password for proxy, if required
            'curl_encoding'              => '',    // leave blank for all supported formats, else use gzip, deflate, identity etc
            // streaming API configuration
            'is_streaming'               => false,
            'streaming_eol'              => "\r\n",
            'streaming_metrics_interval' => 10,
            // header or querystring. You should always use header!
            // this is just to help me debug other developers implementations
            'as_header'                  => true,
            'force_nonce'                => false, // used for checking signatures. leave as false for auto
            'force_timestamp'            => false, // used for checking signatures. leave as false for auto
        ),
        $config
    );
}