Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Taras_lebdyk
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 246
#1

Как работать с API VK / Facebook? - Программирование Android

18.12.2015, 17:07. Просмотров 625. Ответов 11
Метки нет (Все метки)

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

1. С помощью чего можно сделать чтобы в приложении отображались новости из группы например вк, facebook, и если можно силки на материалы по которым можно разобраться а то искал не смог ничего хорошего найти.

2. Вот например есть главная Активити и там есть кнопки типа: факультеты, руководство и так далее. При нажатии на кнопку например факультет открывается список факультетов и короткое описание а при нажатии на любой из них открывается уже полная информация по этому факультете, как это лучше сделать? На каждое действие делать новую активити и заполнять ее данными? Можно как-то это более правильно сделать?

Благодарю за помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
18.12.2015, 17:29     Как работать с API VK / Facebook? #2
Цитата Сообщение от Taras_lebdyk Посмотреть сообщение
1. С помощью чего можно сделать чтобы в приложении отображались новости из группы например вк, facebook, и если можно силки на материалы по которым можно разобраться а то искал не смог ничего хорошего найти.
vk sdk /fb sdk + ListView + Adapter + AsyncTask/Loader

Цитата Сообщение от Taras_lebdyk Посмотреть сообщение
2. Вот например есть главная Активити и там есть кнопки типа: факультеты, руководство и так далее. При нажатии на кнопку например факультет открывается список факультетов и короткое описание а при нажатии на любой из них открывается уже полная информация по этому факультете, как это лучше сделать? На каждое действие делать новую активити и заполнять ее данными? Можно как-то это более правильно сделать?
Разные фрагменты.

Советую Вам начать изучение с нуля.
Taras_lebdyk
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 246
18.12.2015, 17:36  [ТС]     Как работать с API VK / Facebook? #3
а можете по "vk sdk /fb sdk + ListView + Adapter + AsyncTask/Loader" посоветовать какую литературу или статьи где описано как сделать?

А если делать на новых активити это сильно плохо и неправильно будет?
А можете и по этому посоветовать литературу? Спасибо.
Pablito
2420 / 1865 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
18.12.2015, 17:38     Как работать с API VK / Facebook? #4
а еще лучше - вы не могли бы написать полный код?

просто я новичек, что такое гугл не в курсе, с английским бооольшие проблемы..да и джаву/сдк я не знаю, до этого педалировал в джумле и немного рисовал акварелью
Taras_lebdyk
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 246
19.12.2015, 16:52  [ТС]     Как работать с API VK / Facebook? #5
Я понял как сопоставить запрос, такой он у меня получился

Java
1
        VKRequest request = VKApi.wall().get(VKParameters.from(VKApiConst.OWNER_ID,"1",VKApiConst.COUNT,"1",VKApiConst.EXTENDED,"0"));
Но так как я понимаю нужно это запрос отправить, нашел пример где он так отправляется

Java
1
startApiCall(request);
но у меня не получается это сделать.
Далее я понял что ответ придет в виде json и нужно Ответ разобрать добавить в список а затем вывести на активити. Такой ответ я получил:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
response: {
count: 205,
items: [{
id: 555311,
from_id: 1,
owner_id: 1,
date: 1447699602,
post_type: 'post',
text: 'Мнение министра связи и массовых коммуникаций РФ [id292653561|Николая Никифорова]:',
attachments: [{
type: 'link',
link: {
url: 'http://ria.ru/soc...116/1322061162.html',
title: 'Глава Минкомсвязи считает неразумным закрывать Telegram',
caption: 'ria.ru',
description: 'Блокировать в России Telegram или другой мессенджер за то, что им пользуются террористы из ИГИЛ, аналогично запрету эксплуатации автомобилей Toyota, так как они тоже популярны у боевиков, заявил глава Минкомсвязи Николай Никифоров.',
photo: {
id: 388257536,
album_id: -2,
owner_id: 322347212,
photo_75: 'http://cs624129.v...167/OJi5LzBWZTk.jpg',
photo_130: 'http://cs624129.v...168/gGoNQQ4_9Fk.jpg',
photo_604: 'http://cs624129.v...169/CJ2nW9TKDf4.jpg',
width: 150,
height: 150,
text: '',
date: 1447669290
},
is_external: 1,
preview_url: 'http://m.vk.com/a...167a06e5f53ca1e639b',
preview_page: '1499120978_2132960693'
}
}],
post_source: {
type: 'vk'
},
comments: {
count: 23450,
can_post: 1
},
likes: {
count: 11059,
user_likes: 0,
can_like: 1,
can_publish: 1
},
reposts: {
count: 357,
user_reposted: 0
}
}]
}
Но проблема в том, что именно для этого нет никакой информации в интернете, а и что есть то она на php.
Я нашел как таковой запрос расписан будет выглядеть на C#:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
public class Photo
{
    public int id { get; set; }
    public int album_id { get; set; }
    public int owner_id { get; set; }
    public string photo_75 { get; set; }
    public string photo_130 { get; set; }
    public string photo_604 { get; set; }
    public int width { get; set; }
    public int height { get; set; }
    public string text { get; set; }
    public int date { get; set; }
}
 
public class Link
{
    public string url { get; set; }
    public string title { get; set; }
    public string caption { get; set; }
    public string description { get; set; }
    public Photo photo { get; set; }
    public int is_external { get; set; }
    public string preview_url { get; set; }
    public string preview_page { get; set; }
}
 
public class Attachment
{
    public string type { get; set; }
    public Link link { get; set; }
}
 
public class PostSource
{
    public string type { get; set; }
}
 
public class Comments
{
    public int count { get; set; }
    public int can_post { get; set; }
}
 
public class Likes
{
    public int count { get; set; }
    public int user_likes { get; set; }
    public int can_like { get; set; }
    public int can_publish { get; set; }
}
 
public class Reposts
{
    public int count { get; set; }
    public int user_reposted { get; set; }
}
 
public class Item
{
    public int id { get; set; }
    public int from_id { get; set; }
    public int owner_id { get; set; }
    public int date { get; set; }
    public string post_type { get; set; }
    public string text { get; set; }
    public List<Attachment> attachments { get; set; }
    public PostSource post_source { get; set; }
    public Comments comments { get; set; }
    public Likes likes { get; set; }
    public Reposts reposts { get; set; }
}
 
public class Response
{
    public int count { get; set; }
    public List<Item> items { get; set; }
}
 
public class RootObject
{
    public Response response { get; set; }
}
но как будет выглядеть на java в и как разложить ответ от сервера не понимаю.
Помогите очень Вас прошу.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
19.12.2015, 17:00     Как работать с API VK / Facebook? #6
Taras_lebdyk, ты хочешь перегнать json в объект java? Используй Gson библиотеку.
Taras_lebdyk
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 246
19.12.2015, 17:04  [ТС]     Как работать с API VK / Facebook? #7
а как это все реализовать?
Запрос я составил как его отправить?
Как потом разобрать ответ и вывести уже в нормальном виде в приложении?

Я просто сам хотел разобраться но именно на это примеров найти не смог есть только как всё это делать на пхп. Если Вам не трудно помогите разобраться пожалуйста.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
19.12.2015, 17:22     Как работать с API VK / Facebook? #8
не хочет урл вставлять ))
Taras_lebdyk
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 246
19.12.2015, 17:23  [ТС]     Как работать с API VK / Facebook? #9
да я уже понял, может попробуете в файл записать адрес и прикирпиты? и можно будет к вам обращаться если что-то не понятно?
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
19.12.2015, 17:25     Как работать с API VK / Facebook? #10
Загугли "android использование gson". там море материала.

Добавлено через 1 минуту
Taras_lebdyk, на форуме кроме меня куча адекватных людей. просто иногда у них нету настроения )))
Taras_lebdyk
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 246
20.12.2015, 11:43  [ТС]     Как работать с API VK / Facebook? #11
да я понимаю но надеюсь Вы мне если это поможете) если конечно у Вас будет свободное время.

Добавлено через 1 час 15 минут
я что-то искал, и в результате посмотрел на структуру ответы выделил основные блоки и по ним что-то попробовал расписать, в результате у меня получилось 7 классов, вот пример:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
public class wallvk
{
    private Response response;
 
    public Response getResponse ()
    {
        return response;
    }
 
    public void setResponse (Response response)
    {
        this.response = response;
    }
 
    @Override
    public String toString()
    {
        return "ClassPojo [response = "+response+"]";
    }
}
 
 
public class Response
{
    private String count;
 
    private Items[] items;
 
    public String getCount ()
    {
        return count;
    }
 
    public void setCount (String count)
    {
        this.count = count;
    }
 
    public Items[] getItems ()
    {
        return items;
    }
 
    public void setItems (Items[] items)
    {
        this.items = items;
    }
 
    @Override
    public String toString()
    {
        return "ClassPojo [count = "+count+", items = "+items+"]";
    }
}
 
 
 
public class Items
{
    private String created_by;
 
    private String text;
 
    private String can_edit;
 
    private String date;
 
    private String id;
 
    private Post_source post_source;
 
    private Reposts reposts;
 
    private String from_id;
 
    private Likes likes;
 
    private String owner_id;
 
    private String post_type;
 
    private String can_pin;
 
    private String can_delete;
 
    private Comments comments;
 
    public String getCreated_by ()
    {
        return created_by;
    }
 
    public void setCreated_by (String created_by)
    {
        this.created_by = created_by;
    }
 
    public String getText ()
    {
        return text;
    }
 
    public void setText (String text)
    {
        this.text = text;
    }
 
    public String getCan_edit ()
    {
        return can_edit;
    }
 
    public void setCan_edit (String can_edit)
    {
        this.can_edit = can_edit;
    }
 
    public String getDate ()
    {
        return date;
    }
 
    public void setDate (String date)
    {
        this.date = date;
    }
 
    public String getId ()
    {
        return id;
    }
 
    public void setId (String id)
    {
        this.id = id;
    }
 
    public Post_source getPost_source ()
    {
        return post_source;
    }
 
    public void setPost_source (Post_source post_source)
    {
        this.post_source = post_source;
    }
 
    public Reposts getReposts ()
    {
        return reposts;
    }
 
    public void setReposts (Reposts reposts)
    {
        this.reposts = reposts;
    }
 
    public String getFrom_id ()
    {
        return from_id;
    }
 
    public void setFrom_id (String from_id)
    {
        this.from_id = from_id;
    }
 
    public Likes getLikes ()
    {
        return likes;
    }
 
    public void setLikes (Likes likes)
    {
        this.likes = likes;
    }
 
    public String getOwner_id ()
    {
        return owner_id;
    }
 
    public void setOwner_id (String owner_id)
    {
        this.owner_id = owner_id;
    }
 
    public String getPost_type ()
    {
        return post_type;
    }
 
    public void setPost_type (String post_type)
    {
        this.post_type = post_type;
    }
 
    public String getCan_pin ()
    {
        return can_pin;
    }
 
    public void setCan_pin (String can_pin)
    {
        this.can_pin = can_pin;
    }
 
    public String getCan_delete ()
    {
        return can_delete;
    }
 
    public void setCan_delete (String can_delete)
    {
        this.can_delete = can_delete;
    }
 
    public Comments getComments ()
    {
        return comments;
    }
 
    public void setComments (Comments comments)
    {
        this.comments = comments;
    }
 
    @Override
    public String toString()
    {
        return "ClassPojo [created_by = "+created_by+", text = "+text+", can_edit = "+can_edit+", date = "+date+", id = "+id+", post_source = "+post_source+", reposts = "+reposts+", from_id = "+from_id+", likes = "+likes+", owner_id = "+owner_id+", post_type = "+post_type+", can_pin = "+can_pin+", can_delete = "+can_delete+", comments = "+comments+"]";
    }
}
 
 
 
public class Reposts
{
    private String count;
 
    private String user_reposted;
 
    public String getCount ()
    {
        return count;
    }
 
    public void setCount (String count)
    {
        this.count = count;
    }
 
    public String getUser_reposted ()
    {
        return user_reposted;
    }
 
    public void setUser_reposted (String user_reposted)
    {
        this.user_reposted = user_reposted;
    }
 
    @Override
    public String toString()
    {
        return "ClassPojo [count = "+count+", user_reposted = "+user_reposted+"]";
    }
}
 
 
public class Likes
{
    private String can_publish;
 
    private String can_like;
 
    private String user_likes;
 
    private String count;
 
    public String getCan_publish ()
    {
        return can_publish;
    }
 
    public void setCan_publish (String can_publish)
    {
        this.can_publish = can_publish;
    }
 
    public String getCan_like ()
    {
        return can_like;
    }
 
    public void setCan_like (String can_like)
    {
        this.can_like = can_like;
    }
 
    public String getUser_likes ()
    {
        return user_likes;
    }
 
    public void setUser_likes (String user_likes)
    {
        this.user_likes = user_likes;
    }
 
    public String getCount ()
    {
        return count;
    }
 
    public void setCount (String count)
    {
        this.count = count;
    }
 
    @Override
    public String toString()
    {
        return "ClassPojo [can_publish = "+can_publish+", can_like = "+can_like+", user_likes = "+user_likes+", count = "+count+"]";
    }
}
 
 
public class Comments
{
    private String count;
 
    private String can_post;
 
    public String getCount ()
    {
        return count;
    }
 
    public void setCount (String count)
    {
        this.count = count;
    }
 
    public String getCan_post ()
    {
        return can_post;
    }
 
    public void setCan_post (String can_post)
    {
        this.can_post = can_post;
    }
 
    @Override
    public String toString()
    {
        return "ClassPojo [count = "+count+", can_post = "+can_post+"]";
    }
}
 
 
 
public class Post_source
{
    private String type;
 
    public String getType ()
    {
        return type;
    }
 
    public void setType (String type)
    {
        this.type = type;
    }
 
    @Override
    public String toString()
    {
        return "ClassPojo [type = "+type+"]";
    }
}
Затем создал класс JsonWorker

Java
1
2
3
4
5
6
7
8
public class JsonWorker {
    public static List<wallvk> jsonToUserList(String json)
    {
        Gson gson = new Gson();
        Type listType = new TypeToken<List<wallvk>>() {}.getType();
        return gson.fromJson(json,listType);
    }
}
А дальше так как я понимаю нужно создать метод который будет с чем работать, у меня есть пример:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static List<User> getUserFromServer() throws IOException, JSONException {
 
    final List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
    nameValuePairList.add(new BasicNameValuePair("query", "spr_employee_get"));
    nameValuePairList.add(new BasicNameValuePair("p_guid", user_guid));
    final String resp = execHttpGet(url, nameValuePairList);
    JSONObject jsonObject = new JSONObject(resp);
    if (jsonObject.has("p_result")) {
        if (jsonObject.getString("p_result").equalsIgnoreCase("ok"))
            return JsonWorker.jsonToUserList(jsonObject.getJSONArray("p_item").toString());
 
    }
    return new ArrayList<User>();
}
Но здесь я не понимаю как его переделать под себя. Скажите пожалуйста я все правильно сделал? И если так подскажите как переделать этот метод спасибо.

Добавлено через 16 часов 59 минут
Помогите пожалуйста ... Я же не прошу полностью все сделать, я стараюсь делать сам просто незнаю правильно, чего не хватает, что подправить, подскажите пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2015, 15:17     Как работать с API VK / Facebook?
Еще ссылки по теме:
Android Как распарсить JSON c Вконтакте API
Android Как изменить level api приложения
Шаринг Facebook Android
Facebook, Авторизация Android
Facebook leaderboards Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
20.12.2015, 15:17     Как работать с API VK / Facebook? #12
Дальше у вас есть метод который возвращает вам List<wallvk>

Делайте List с этими данными у себя в активити классе в onCreate
Java
1
2
3
List<wallvk> wallvkList = JsonWorker.jsonToUserList(json);//передаете в него json строку которую получили с сервера
//и дальше работаете с ним как с моделью
wallvkList.getResponse().getItems()[0].getText();// 0 это порядковый номер в массиве, там может любое число но не больше getItems().length
Yandex
Объявления
20.12.2015, 15:17     Как работать с API VK / Facebook?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru