我想使用PHP将照片上传到Flickr,首先我需要使用OAuth进行用户身份验证。
这里是api doc的参考:
首先,您必须根据您的请求创建基本字符串。通过使用lexicograhpical字节值顺序(以'&'分隔),将HTTP动词,请求URL和所有按名称排序的请求参数连接起来,构造基本字符串。
使用基本字符串作为文本,并且密钥是Consumer Secret和Token Secret的连接值,用'&'分隔。
并且根据this,在调用
tokenSecret
时request_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文档的参考:首先,您必须从您的...
$baseStr = urlencode($httpVerb . '&' . $requestUrl . '&' . $queryStr);