Как получить Yahoo контакты в Android - PullRequest
2 голосов
/ 17 января 2012

Я хочу интегрировать Yahoo в свое приложение для Android, чтобы получить контакты Yahoo.Я использовал API контактов Yahoo, который открывает WebView для входа в систему.Когда я импортирую контакты из Yahoo, используя процедуру ouath с методом подписи ouath HMAC-SHA1.У меня проблема "Подпись недействительна".

Если я использую метод подписи "PLAINTEXT", он работал нормально во время аутентификации oauth, во время использования социального API yahoo это приводит к неверному типу подписи.Есть идеи по поводу этой проблемы?

И я хочу еще какой-нибудь способ, с помощью которого мне не нужно показывать веб-просмотр пользователю, и аутентификация происходит в фоновом режиме.После входа в систему я должен войти в систему в контактах пользователя.Любая идея ... ???

==============================================

Вот запросы и ответы, которые я получил:

Первый запрос: -

https://api.login.yahoo.com/oauth/v2/get_request_token?oauth_nonce=asf234hkldfkjjksdbfjkbasdfsdasd&oauth_timestamp=1326787922&oauth_consumer_key=dj0yJmk9bmlsQzJxTEhsd254JmQ9WVdrOU1rODBZbXBaTkhNbWNHbzlORGN6TmpNNE5EWXkmcz1jb25zdW1lcnNlY3JldCZ4PWE3&oauth_signature_method=plaintext&oauth_signature=e6797e7744d52cf101fd9d4671514469429afe07%26&oauth_version=1.0&xoauth_lang_pref=en-us&oauth_callback=https://api.login.yahoo.com/oauth/v2/desktop

Ответ Первый запрос: -

oauth_token = kkdhque & oauth_token_secret = 43afb117c8880535d40d91ab6eb1cd9cf070b6bb & oauth_expires_in = 3600 & xoauth_request_auth_url = HTTPS% 3A% 2F% 2Fapi.login.yahoo.com% 2Foauth% 2Fv2% 2Frequest_auth% 3Foauth_token% 3Dkkdhque & oauth_callback_confirmed = истина

Второй запрос, в котором пользователь вводит свое имя пользователя и пароль в веб-просмотре.

https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=k3qacet

Третий запрос, в котором пользователь подтверждает, что это приложение может использовать мой адрес электронной почты в веб-просмотре.

Это приводит к проверке oauth.

Четвертый запрос, в котором веб-просмотр завершен и пользователь получает токен доступа или (oauth_token)

https://api.login.yahoo.com/oauth/v2/get_token?oauth_consumer_key=dj0yJmk9bmlsQzJxTEhsd254JmQ9WVdrOU1rODBZbXBaTkhNbWNHbzlORGN6TmpNNE5EWXkmcz1jb25zdW1lcnNlY3JldCZ4PWE3&oauth_signature_method=PLAINTEXT&oauth_version=1.0&oauth_verifier=rwbhqa&oauth_token=k3qacet&oauth_timestamp=1326787922&oauth_nonce=asf234hkldfkjjksdbfjkb&oauth_signature=e6797e7744d52cf101fd9d4671514469429afe07%26737c58816d097623629eac73c8c17207c641f360

Ответ Четвертый запрос:-

oauth_token = A% 3DhX_2we7E7jDnmFyp_8sBq2jECdy3Qq3joNFqb6S70DcHwqh81q19r3KFvSljXFrjVjk3gw8UOkMcvs7sYNdZzbTDQhwYyPswES1HRhBv94wYFmCclOmXCL.XNOCgNQWkKbHha0puKPRnSY12tKASSPdmqYdynuw5c72sL6mb89Ord7hFmkn7mOqKeB5E0R.H1oM1vkxIc2_x3nhifZvHP1gHxG8rm3I2Qh4PsXl3sTeAOVp7xGjOVELdqjX4rxlvXwAHW8OHrZLniCiNNqtb9yhEDBGutFyos0gQikBZ3FQjS04Q0X6Vz53FwN58GWS6ok1IpppwYSaXVGxf6T3mtGZo90lNugbCAho5H9frYkV3dq9xM.LIiBdA3nPEJfef3ZCciNSYHtk_0_k3jSChDIiDuKwx4wwaHUSygZq0cOSWGV6iWdnc9qitu7xLLzzO5YDFStmkZK2ks144RLVookPqsPOHew.zovCcPup3oG3bOq4FKR9UAXaIfqtj6bMNauBpFiTmy8r9WIKJ5lKCJZux1oqCHECpSjhK98P2vTqVv08jU3.S15W6dPro9lwOVeMStacATvWE0wVumeOhg54.190zTvWxaCyNBSVKuKxlsOc8cDY6o_qhFtf.hiWLisVHKOpGkMhsdpECuaYaCSDGkNO8iEEcGE5nAS1VHbuxWl6TW1pRQxBUrDQWZiO.FPKAFQhz5gNjSbE14ygihPQVYYe_vJ0D.wdsOk4VY.aKovCe10vTl5N9t58ZhqJIH7pviYRuS8U- & oauth_token_secret = 50f8b0c3742c653270f4ab171e344a6cb525eca5 & oauth_expires_in = 3600 & oauth_session_handle = AGgtEE.0Q98PruZjCCh2K9YIlCw_faQSJbrMRUeMzledZ.Tgqrg- & oauth_authorization_expires_in = 820695219 & xoauth_yahoo_guid = NNZ4BOGR43W5RY6LMEXJVUZYUE

1037 * Пятый запрос в порядкеполучить список контактовпользователей, которых я хочу получить.

http://social.yahooapis.com/v1/user/NNZ4BOGR43W5RY6LMEXJVUZYUE/profile?format=json&OAuth_realm=yahooapis.com&oauth_consumer_key=dj0yJmk9bmlsQzJxTEhsd254JmQ9WVdrOU1rODBZbXBaTkhNbWNHbzlORGN6TmpNNE5EWXkmcz1jb25zdW1lcnNlY3JldCZ4PWE3&oauth_nonce=asf234hkldfkjjksdbfjkb&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1326787922&oauth_token=A%3D3cDEMvjdhV1KBgctAVMkpK5rham6RwashDSWUpZZWcnCHhG9U5SKiPFRIFBqYWyIik8MI.ALFZMNc0tFbr55uYoHZKP_4BCKjmw99FvLlILhKvg7EqsUqxW4riEcnz0vFtHM07No_nt4KYKEYjuzuZVzOU8Ig14r8t97XfBksMUGuUvkkdKRyfnmcauz9uCH.XA5s6OUzK5dSCUvrIgvnF6U7E.V8Dt0TRc_SAVn_wpm09qny5LrE5oGv1QL1c91PHztbr3IjXQctk4wGP8rOyCumfrs_IbV55.KvD18Ykw.oEUgFJRhjBxna5Dcn4YT1A0YziLkBmPayODSnh5i4QR_Y7rZKBxmKS06WTxO9xiJZVJi9a0eMWgHvkhT4G4inB7C8GakCSnq9NxXVO5jW.zJFJWMbzuxiNXvo4gKvCE03hEtNPGPwvUK1RtZyMZgyBXzr26Lxpss8CMUL2qtdR6HFSLCTc5feltiLCfiez359Bzb6HIzz6XOwBlcaLa44qjBA5hBUYPvPj2NRyEAhHKJkKj2qzT_vm8pHX65nVGUtIq9765oP.yZMU75WewKcBtD1UdaOoYW9ViKghJRajAy9AE9MHDe4M1VG0cRkO91vux77SbyNtm3y8NnUbCoTL9iL3ltFfABfg6xKW2c.IO4cQ0NowMjUqf.JqboY_ckjxUAXp9oP1tHkEZX1jb4GRv410chjR471ayKMZBjkgay.5XmN4Uq93C.h_hIa25wCBMKW9Zr1I512aZ3hyMePYHneHCz94c-&oauth_version=1.0&oauth_signature=e6797e7744d52cf101fd9d4671514469429afe07&48ae3c65bf198592e4758005bb551c14e163fa61

Ответ пятого запроса

{error: {lang: "en-US", описание: "Pleaseпредоставить действительные учетные данные.OAuth oauth_problem = "подпись неверна", realm = "yahooapis.com" "}}

1 Ответ

1 голос
/ 17 января 2012

Если вы получаете подпись недействительной, ваш запрос OAuth, скорее всего, неправильно подписан. OAuth 1.0a и ниже действительно является головной болью. Alhamdulillaah, они работают над AOuth2.0, который убирает много отсталости.

Если вы не возражаете опубликовать базу подписей OAuth, заголовок авторизации и запрос, я могу помочь вам подробно. Самые частые ошибки, которые я видел, люди делают, они используют метку времени не по Гринвичу, они используют подмножество возвращенного токена из-за плохого синтаксического анализа (вам, вероятно, не придется беспокоиться об этом, так как токены Yahoo довольно чисты [A-za-z0 -9] но не все так - в любом случае, вручную посмотрите на ваш ответ на первом шаге процесса входа в систему и убедитесь, что ваш код анализирует весь заголовок), также убедитесь, что вы отправляете в свой верификатор для всех REST запросы, да, верификатор, который вы должны были ввести для входа в систему. В других случаях я видел, как алгоритм HMCA людей не работает должным образом, или они забывают правильно URL-кодировать версию Base64 своих подписанных переменных ... что еще ... все это приходит на ум. Это было какое-то время.

Продвигаясь прямо вперед, нет причин, по которым вам нужно просматривать веб-страницы. Отправляемая и получаемая информация - это просто HTML-код, так что вы можете анализировать ее самостоятельно или использовать любой из результатов 2.9mil Google для html-анализаторов. Шаг только , для которого вам нужен веб-браузер, - это вход пользователя в свою учетную запись Yahoo, и даже этот шаг может быть автоматизирован [1] путем анализа страницы и получения cb2_authenticity_token. или аналогичный, а затем отправить его по адресу в HTML [форма]. Он вернет вам страницу с верификатором, который вы также можете проанализировать, и я успешно сделал это с помощью твиттера.

В любом случае, напишите код, и мы поможем вам в дальнейшем.

[1] Отредактируйте примечание, вам, однако, понадобится L / P Yahoo для автоматизации этого.

...