Я использую Yahoo! Социальный SDK, позволяющий пользователю авторизоваться, а затем получить список своих контактов. Я настроил приложение, чтобы разрешить чтение контактных данных, и это проверяется при аутентификации.
Аутентификация работает, потому что я могу использовать профиль, используя getProfile()
при каждой загрузке страницы. getContacts()
- это проблема, хотя в 95% случаев он возвращает false, что неверно.
Я делаю что-то не так с токенами запроса, что означает, что getContacts()
не имеет правильного разрешения для успешного запуска, или у Yahoo есть какая-то странная проблема с кэшированием этого запроса? Это еще сложнее с явным отсутствием документации от них относительно их API и php, есть ли другая новая библиотека, которую я могу использовать для достижения этой цели? Я знаю, что это возможно, потому что я могу использовать рабочую версию на веб-странице «Пригласить друга AirBnb».
Это код, который я использую, он написан с использованием CodeIgniter, поэтому синтаксис поясняется.
public function yahoo() {
$oauthapp = new YahooOAuthApplication(DEV_OAUTH_CONSUMER_KEY, DEV_OAUTH_CONSUMER_SECRET, DEV_OAUTH_APP_ID, DEV_OAUTH_DOMAIN);
if($this->session->userdata('yahoo_oauth_access_token')){
$oauthapp->token = YahooOAuthAccessToken::from_string($this->session->userdata('yahoo_oauth_access_token'));
$profile = $oauthapp->getProfile();
$contacts = $oauthapp->getContacts(0, 1000);
if($profile)
print_r($profile);
else
echo "No profile / error";
if($contacts)
print_r($contacts);
else
echo "No contacts / error";
}
elseif(!$this->input->get()) {
$request_token = $oauthapp->getRequestToken(DEV_OAUTH_DOMAIN);
$this->session->set_userdata('request_token', json_encode($request_token));
$redirect_url = $oauthapp->getAuthorizationUrl($request_token);
redirect($redirect_url);
}
else {
$request_token = json_decode($this->session->userdata('request_token'));
$oauthapp->token = $oauthapp->getAccessToken($request_token, $this->input->get('oauth_verifier'));
$this->session->set_userdata('yahoo_oauth_access_token', $oauthapp->token->to_string());
redirect("/index/yahoo");
}
}
refresh_token
). В любом случае, если вы рассматривали возможность использования внешних средств импорта контактов, таких как OpenInviter или CloudSponge? - person Rael Gugelmin Cunha   schedule 18.06.2015