vkontakte_api 1.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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