возврат api twitter: не авторизован для использования этой конечной точки

#twitter

#Twitter

Вопрос:

РЕДАКТИРОВАТЬ: Я надеялся, что абрахам ошибался, но, к сожалению, на данный момент он абсолютно прав. Это не часть официального API.

Я пытаюсь использовать api Twitter для принятия запроса на подписку в защищенной учетной записи.
Я использовал OAuth для аутентификации себя, и все конечные точки api работают должным образом.
Но когда я пытаюсь использовать http://api.twitter.com/1/friendships/accept.json
Я получаю следующий ответ:

 {"errors":[{"code":37,"message":"Not authorized to use this endpoint"}]}
  

И да, это конечная точка POST, а не GET.
Должен быть способ обойти это. Существуют другие приложения, которые каким-то образом обходят это.
Пожалуйста, помогите.

TIA

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Мой ПОСТ, как показано в Fiddler:

 POST https://api.twitter.com/1/friendships/accept.json HTTP/1.1
Authorization: OAuth oauth_timestamp="1307086335",oauth_nonce="CxZOu9zk3IqlRMQ3s",oauth_version="1.0",oauth_signature_method="HMAC-SHA1",oauth_consumer_key="hK6dftsut8UgUICrb8d1Yw",oauth_token="304415306-yabqGaJiEOEx8NYGC7qXttoJyEbA7ycQILBKY",oauth_signature="zFtCNYzOU8XbVVHAymazkltW4Xs="
Content-Type: application/x-www-form-urlencoded
Host: api.twitter.com
Content-Length: 16
Connection: Keep-Alive

user_id=45807474
  

И вот Twitter, захваченный Fiddler:

 POST http://api.twitter.com/1/friendships/accept.json HTTP/1.1
Host: api.twitter.com
Proxy-Connection: keep-alive
Referer: http://api.twitter.com/receiver.html
Content-Length: 81
Origin: http://api.twitter.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01
X-Phx: true
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: guest_id=130451073302552267; __utmz=43838368.1304689370.3.3.utmcsr=mybroadband.co.za|utmccn=(referral)|utmcmd=referral|utmcct=/news/cellular/19383-Android-paid-market-arriving-South-Africa.html; __qca=P0-701205957-1307007945635; original_referer=JbKFAfGwv4RwApvTLqS+uSg2nN6n6Sc2FNg+/JZdApHOHiilCO8gnQ==; auth_token=d2f0d92a931cf954727bf6667cf38f48cb1e75f1; twid=u=304415306|UtwJgOgbvSsO8QsBhX7fM3JpcQ4=; twll=l=1307013065; external_referer=ZLhHHTiegr9ziOY2WC22JyCEc9mRpioNrN9gRZ8lMqQakz1ge+ROzRwTTLv60GEo; k=196.33.166.196.1307022588816189; __utma=43838368.1872776221.1299681259.1307079974.1307086527.9; __utmc=43838368; __utmv=43838368.lang: en; __utmb=43838368.6.10.1307086527; lang=en; _twitter_sess=BAh7DToVaW5fbmV3X3VzZXJfZmxvdzA6CXVzZXJpBEoCJRI6DGNzcmZfaWQi%0AJWM3Zjc4ZTc4NmE0ZDFkZjRlYzEzOTNhM2QyYzkxNjdhOg5yZXR1cm5fdG8i%0AKGh0dHA6Ly90d2l0dGVyLmNvbS9zZXR0aW5ncy9hY2NvdW50OhNwYXNzd29y%0AZF90b2tlbiItZDJmMGQ5MmE5MzFjZjk1NDcyN2JmNjY2N2NmMzhmNDhjYjFl%0ANzVmMToPY3JlYXRlZF9hdGwrCJb7nVAwAToHaWQiJTU4ZmU0OGYzMTM4OWQy%0AMDAwMWE5Y2M5ZjRjZTUzZjM1IgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVy%0AOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--fe9109485afb838e1b09c7425e205f3dea7a23aa

user_id=45807474amp;post_authenticity_token=96bc19d60674d226e5a5125995de8748035dea6f
  

Похоже, у них намного больше деталей в заголовках, и они также передают переменную с именем
post_authenticity_token
Надеюсь, дополнительные подробности прольют больше света на эту проблему.

Ответ №1:

Я раньше сталкивался с этой проблемой, и это ошибка с API Twitter. Временным решением, которое я нашел для работы, было переключение на https. Вам также следует отправить отчет об ошибке в Twitter.

Обновление: friendships/accept не является официальным методом API Twitter. Я думал, что Twitter внедрил это, но они этого не сделали. Вам нужно будет, чтобы пользователи посещали twitter.com для авторизации подписчиков. Вы можете просмотреть методы API поддержки Twitter на dev.twitter.com.

Комментарии:

1. Я где-то читал, что переключение на https помогает, но я попробовал это, и это не сработало. Возможно, я неправильно оформляю сообщение.

2. friendships/accpet не является общедоступным методом API Twitter. Я обновил свой ответ, чтобы отразить это.