2015-11-04 4 views
2

Я видел это с помощью API Javascript и с помощью запросов GET можно публиковать сообщения из FanPages. То, что я пытаюсь выполнить, - это приложение Android Native, которое не запрашивает у пользователя входа в систему, а токен доступа к FB App получает и показывает сообщения на странице FB. мне интересно, если это возможно с помощью Android FB API, как я могу сделать это с помощью URL-адресов, какДоступ к API-интерфейсу Facebook без входа в систему

https://graph.facebook.com/{page_id}/feed?fields=message,picture&limit=10&access_token={your_acces_token} 

Когда я пытаюсь это с Android Graph API, без разрешения пользователя Loging,

AccessToken.getCurrentAccessToken()

возвращает нулевое значение

Спасибо

ответ

1

Есть два способа сделать это, и они оба - documented here.

Простейший способ состоит в том, чтобы просто объединить ваши AppID и AppSecret (находящиеся на панели инструментов разработчика Facebook) с помощью «|» персонаж такой: «Идентификатор приложения» + '|' + 'App Secret'

BE WARNED! Это будет раскрывать ваши личные учетные данные вашего приложения в кодовом коде клиента, если кто-то решит внимательно посмотреть. Поэтому гораздо безопаснее настраивать частный серверный сервер, чтобы выступать в качестве прокси-сервера для доступа пользователя к графическому API без участия пользователя.

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

Например:

без доступа Токеном:

Mobile App --->http://www.YourServerDomain/ {PAGE_ID}/корма полей = сообщение, картина & предел = 10

С доступом Идентификатор:

Ваш сервер --->http://graph.facebook.com/ {page_id}/feed? Fields = message, picture & предел = 10 & access_token = AppID | AppSecret

трубопровода Ответ

Facebook ---> API РЕЗУЛЬТАТ ---> Ваш сервер ---> API РЕЗУЛЬТАТ ---> Mobile App

+0

Так что это всегда нужно делать через чистый HTTP? Никакой способ сделать это через Android FB SDK? – PereCullera

+1

Я не знаком с Android SDK, но, глядя на документацию, вы, вероятно, могли бы сделать что-то вроде этого: String appToken = "AppID" + "|" + «AppSecret»; AccessToken token = новый AccessToken (appToken, «AppID», null, null, null, null, null, null); GraphRequest req = новый GraphRequest (токен, "page_id/feed"); Ознакомьтесь с документацией здесь: https://developers.facebook.com/docs/reference/android/current/ – DogNibbler

+0

Существует ли какой-либо общедоступный сервер, который реализует метод «Без доступа»? – Finesse

-1

Вы не можете использовать API Graph без маркеров доступа в йо ур использование кейс. См

Право доступ

  • маркер доступ необходим для просмотра общедоступных сообщений.
  • Для доступа к сообщениям, видимым для этого лица, требуется токен доступа пользователя.
  • Для получения любых других сообщений требуется токен доступа к странице.
  • Для /{page-id}/promotable_posts требуется токен доступа пользователя с разрешением на использование рекламы или токеном доступа к странице.

Как минимум, вам нужно использовать либо App маркер доступа, или страницу доступа Токен в вашем приложении.

+0

С вопросом: «с помощью токена доступа к приложениям FB и отображения сообщений», похоже, OP хочет знать, как использовать токен доступа к доступу для просмотра общедоступного контента. Ваш ответ говорит им, что они не могут этого сделать, а затем рекомендует использовать токен доступа к App Access. – DogNibbler

+0

@DogNibbler Я не понимаю, о чем вы говорите ...? Вопрос в том, возможно ли это без токена доступа, а четкий ответ - нет. Вот и все. – Tobi

+0

См. Исправленный комментарий – DogNibbler

2

я боролся с тем же на некоторое время и после нескольких часов исследований я пришел с этим (source):

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    FacebookSdk.sdkInitialize(getApplicationContext()); 
    AppEventsLogger.activateApp(getApplication()); 

    AccessToken at   = new AccessToken(getString(R.string.facebook_access_token), getString(R.string.facebook_app_id), getString(R.string.facebook_page_id), null, null, null, null, null); 
    Bundle  parameters = new Bundle(); 
    parameters.putString("fields", "message,created_time,link,full_picture"); 
    new GraphRequest(at, "/" + at.getUserId() + "/feed", parameters, HttpMethod.GET, new GraphRequest.Callback() { 

    public void onCompleted(GraphResponse response) { 

     Log.i(this.getClass().getName(), "onCompleted " + response.getRawResponse()); 
    } 
    }).executeAsync(); 
} 

Я предполагаю, что у вас уже есть маркер доступа к странице. Я создал мой с помощью графического проводника из facebook. Вот учебник о том, как создать никогда не истекающий один: How to get a never expiring Facebook Page Access Token (вид для 2016 года метод)

Насколько я знаю, расширенный маркер не истекает до тех пор, как она используется. Но я не уверен в этом. Я думаю, что я крашу это где-то в facebook api docs, но больше не могу его найти.

Есть много других параметров, которые вы можете установить. См. Здесь Page и ищите «Поля»

Надейтесь, что это неуклюжее решение полезно кому-то.