У меня проблема с Flickr API - Photosets Add Photo (https://www.flickr.com/services/api/flickr.photosets.addPhoto.html)
Вот мой код:
Загрузка (работает хорошо)
protected function doUpload()
{
$params = $this->getParameters(array(
'title' => basename($this->file),
'description' => self::POWERED_BY,
'tags' => self::POWERED_BY,
'is_public' => '0',
'is_friend' => '0',
'is_family' => '0',
'content_type' => 1, // 1: photo, 2:screenshot
'safety_level' => '',
'hidden' => '',
'oauth_token' => $this->getAccessToken(),
));
list($url, $params) = $this->prepareOAuthRequestData(self::UPLOAD_ENDPOINT, 'POST', $params);
$params['photo'] = '@' . $this->file;
$this->resetHttpClient();
$this->client->setParameters($params);
$this->client->setSubmitMultipart();
$this->client->execute($url);
$text = $this->client->getResponseText();
if (!$photoId = $this->getMatch('#<photoid>([\d]+)</photoid>#i', $text)) {
parse_str($text, $result);
if (isset($result['oauth_problem'])) {
$this->throwException('UPLOAD_PROBLEM: "%s"', $result['oauth_problem']);
} else {
$error = $this->getMatch('#code="(.+?)"#', $text);
$msg = $this->getMatch('#msg="(.+?)"#', $text);
$this->throwException('UPLOAD_PROBLEM: "%s" (%d)', $msg, $error);
}
}
$this->call('flickr.photosets.addPhoto', array('photoset_id' => '333333', 'photo_id' => $photoId));
$result = $this->call('flickr.photos.getInfo', array('photo_id' => $photoId));
return $this->getPhotoUrl($result['photo']);
}
Call Func(flickr.photos.getInfo работает хорошо)
protected function call($method, array $params = array())
{
$params += $this->getParameters($params + array(
'method' => $method,
'oauth_token' => $this->getAccessToken(),
'format' => 'json',
'nojsoncallback' => '1'
));
list($url, $params) = $this->prepareOAuthRequestData(self::API_ENDPOINT, 'GET', $params);
$this->resetHttpClient();
$this->client->execute($url);
if (false === $result = json_decode($this->client->getResponseText(), true)) {
parse_str($this->client->getResponseText(), $result);
if (isset($result['oauth_problem'])) {
$this->throwException('API_PROBLEM: "%s"', $result['oauth_problem']);
}
}
if ($result['stat'] == 'fail') {
$this->throwException('API_PROBLEM: "%s" fail. MESSAGE: "%s", CODE: "%s"',
$method, $result['message'], $result['code']
);
}
return $result;
}
Почему вызов flickr.photos.getInfo работает хорошо, а flickr.photosets.addPhoto - нет.
Я также изменяю GET на POSTне работает.
Не знаю. Пожалуйста, помогите мне.