[在Flickr中使用php获取请求令牌:oauth_problem = signature_invalid

问题描述 投票:0回答:1

我想使用PHP将照片上传到Flickr,首先我需要使用OAuth进行用户身份验证。

这里是api doc的参考:

首先,您必须根据您的请求创建基本字符串。通过使用lexicograhpical字节值顺序(以'&'分隔),将HTTP动词,请求URL和所有按名称排序的请求参数连接起来,构造基本字符串。

使用基本字符串作为文本,并且密钥是Consumer Secret和Token Secret的连接值,用'&'分隔。

并且根据this,在调用tokenSecretrequest_token是空字符串>

这是我的代码段:

/**
 * generateSignature
 * @param        $httpVerb
 * @param        $requestUrl
 * @param        $parameters
 * @param string $tokenSecret
 *
 * @return string
 */
function generateSignature($httpVerb, $requestUrl, $parameters, $tokenSecret=''){
    global $consumerSecret;
    ksort($parameters);
    $queryStr = http_build_query($parameters);
    $baseStr = urlencode($httpVerb . '&' . $requestUrl . '&' . $queryStr);
    $key = $consumerSecret . '&' . $tokenSecret;
    $signature = hash_hmac('sha1', $baseStr, $key, false);
    return $signature;
}

/**
 * getRequestToken
 * @return string
 */
function getRequestToken(){
    global $consumerKey;
    global $callbackUrl;
    $requestTokenURL = 'https://www.flickr.com/services/oauth/request_token';
    $queryParameters = [
        //nonce: temporarily use hard code
        'oauth_nonce' => '83273423',
        'oauth_timestamp' => time(),
        'oauth_consumer_key' => $consumerKey,
        'oauth_signature_method' => 'HMAC-SHA1',
        'oauth_version' => '1.0',
        'oauth_callback' => urlencode($callbackUrl),
    ];
    $queryParameters['oauth_signature'] = generateSignature('GET', $requestTokenURL, $queryParameters);
    $queryStr = http_build_query($queryParameters);
    return $requestTokenURL . '?' . $queryStr;
}

$consumerKey = '<YOUR_CONSUMER_KEY>';
$consumerSecret = '<YOUR_CONSUMER_SECRET>';
$callbackUrl = '<YOUR_REDIRECT_URL>';
$requestTokenURLWithQueryStr = getRequestToken();
// echo $requestTokenURLWithQueryStr;exit;
header('Location: '. $requestTokenURLWithQueryStr);

但是我从Flickr那里得到了“ oauth_problem = signature_invalid”,我不知道我在哪里错,任何熟悉这一点的人都可以帮助我吗?

我想使用PHP将照片上传到Flickr,首先我需要使用OAuth进行用户身份验证。这是api文档的参考:首先,您必须从您的...

php oauth-2.0 flickr hmacsha1
1个回答
0
投票
$baseStr = urlencode($httpVerb . '&' . $requestUrl . '&' . $queryStr);
© www.soinside.com 2019 - 2024. All rights reserved.