vkontakte_api 1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.md CHANGED
@@ -1,4 +1,9 @@
1
- ## 1.0 (в разработке)
1
+ ## 1.0.1 (13.08.2012)
2
+
3
+ * Пространство имен `leads`
4
+ * Удалены пространства имен `activity`, `offers` и `questions`
5
+
6
+ ## 1.0 (20.07.2012)
2
7
 
3
8
  * Новые пространства имен
4
9
  * rails-генератор конфиг-файла
data/README.md CHANGED
@@ -76,13 +76,22 @@ VkontakteApi.upload(url: url, photo: ['/path/to/file.jpg', 'image/jpeg'])
76
76
 
77
77
  ##### Сайт
78
78
 
79
- Авторизация сайтов проходит в 2 шага: сначала пользователь перенаправляется на страницу ВКонтакте для подтверждения запрошенных у него прав сайта на доступ к его данным. Со списком возможных прав можно ознакомиться [здесь](http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%B0%D0%B2%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9). Допустим, нужно получить доступ к друзьям (`friends`) и фотографиям (`photos`) пользователя.
79
+ Авторизация сайтов проходит в 2 шага. Сначала пользователь перенаправляется на страницу ВКонтакте для подтверждения запрошенных у него прав сайта на доступ к его данным. Со списком возможных прав можно ознакомиться [здесь](http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%B0%D0%B2%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9). Допустим, нужно получить доступ к друзьям (`friends`) и фотографиям (`photos`) пользователя.
80
+
81
+ В соответствии с [рекомендациями](http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-10.12) в протоколе OAuth2 для защиты от [CSRF](http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2), нужно передать параметр `state`, содержащий случайное значение. На данный момент по непонятным причинам ВКонтакте игнорирует этот параметр, если в `scope` не указан `notify`.
80
82
 
81
83
  ``` ruby
82
- redirect_to VkontakteApi.authorization_url(scope: [:friends, :photos])
84
+ session[:state] = Digest::MD5.hexdigest(rand.to_s)
85
+ redirect_to VkontakteApi.authorization_url(scope: [:notify, :friends, :photos], state: session[:state])
83
86
  ```
84
87
 
85
- После подтверждения пользователь перенаправляется на указанный в настройках `redirect_uri`, причем в параметрах будет передан код, по которому можно получить токен доступа. `vkontakte_api` предоставляет метод `VkontakteApi.authorize`, который делает запрос к ВКонтакте, получает токен и создает клиент; нужно лишь передать ему код:
88
+ После подтверждения пользователь перенаправляется на указанный в настройках `redirect_uri`, причем в параметрах будет передан код, по которому можно получить токен доступа, а также переданный ранее `state`. Если `state` не совпадает с тем, который был использован при отправлении пользователя на ВКонтакте, то скорее всего это попытка CSRF-атаки - стоит отправить пользователя на повторную авторизацию.
89
+
90
+ ``` ruby
91
+ redirect_to login_url, alert: 'Ошибка авторизации' if params[:state] != session[:state]
92
+ ```
93
+
94
+ `vkontakte_api` предоставляет метод `VkontakteApi.authorize`, который делает запрос к ВКонтакте, получает токен и создает клиент; нужно лишь передать ему код:
86
95
 
87
96
  ``` ruby
88
97
  @vk = VkontakteApi.authorize(code: params[:code])
@@ -151,6 +160,10 @@ vk.friends.get(uid: 1, fields: [:first_name, :last_name, :photo])
151
160
 
152
161
  Таким образом, в rails-приложении с настройками по умолчанию в production записываются только ответы сервера при ошибках; в development также логгируются URL-ы запросов.
153
162
 
163
+ ### Пример использования
164
+
165
+ [Здесь](http://vkontakte-on-rails.herokuapp.com/) можно посмотреть пример использования `vkontakte_api` в rails-приложении (используются только читающие методы *.get - приложение ничего не пишет на ВКонтакте, только читает). Исходный код можно посмотреть [тут](https://github.com/7even/vkontakte_on_rails).
166
+
154
167
  ## Настройка
155
168
 
156
169
  Глобальные параметры `vkontakte_api` задаются в блоке `VkontakteApi.configure` следующим образом:
@@ -1,4 +1,5 @@
1
1
  - users
2
+ - likes
2
3
  - friends
3
4
  - groups
4
5
  - photos
@@ -13,16 +14,13 @@
13
14
  - storage
14
15
  - notes
15
16
  - pages
16
- - activity
17
- - offers
18
- - questions
17
+ - stats
19
18
  - subscriptions
19
+ - leads
20
20
  - messages
21
- - likes
22
21
  - status
23
22
  - polls
24
23
  - account
25
24
  - board
26
- - auth
27
- - stats
28
25
  - fave
26
+ - auth
@@ -1,4 +1,4 @@
1
1
  module VkontakteApi
2
2
  # Library version.
3
- VERSION = '1.0'
3
+ VERSION = '1.0.1'
4
4
  end
@@ -6,7 +6,7 @@ describe VkontakteApi::API do
6
6
 
7
7
  @connection = Faraday.new do |builder|
8
8
  builder.response :mashify
9
- builder.response :json, :preserve_raw => true
9
+ builder.response :oj, :preserve_raw => true
10
10
  builder.adapter :test do |stub|
11
11
  stub.get('/apiMethod') do
12
12
  [200, {}, Oj.dump(@result)]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vkontakte_api
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-19 00:00:00.000000000 Z
12
+ date: 2012-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday