2011-12-14 4 views
2

Я строю приложение FB, который делает следующее:Facebook параметр код для аутентификации OAuth

1) перенаправить первоначальный запрос на FB, чтобы отождествить/логин следующим образом:

https://www.facebook.com/dialog/oauth?client_id=MYAPPID&redirect_uri=http://localhost:8080/FB/servlet&scope=read_stream&response_type=code

2) в сервлет, получить параметр "код" (который является signed_request):

String signedReq = request.getParameter("code"); 

// the String retrieved from the code parameter is: 
//3DaDJXq1Mlsq67GbeudlUxu7bY5Um4hSJlwzoPCHhp4.eyJpdiI6Ikc1ODNuRjZXbnhCb0hUV1FEMVNTQUEifQ._iXKxSGiNHfc-i5fRO35ny6hZ03DcLwu4bpAkslqoZk6OfxW5Uo36HwhUH2Gwm2byPh5rVp2kKCNS6EoPEZJzsqdhZ_MhuUD8WGky1dx5J-qNOUqQK9uNM4HG4ziSgFaAV8mzMGeUeRo8KSL0tcKuq 

// Этот параметр содержит «# _ = _» в конце в действительном «коде», но я не могу получить его через request.getParameter («код»); это веб-приложение java ,

+0

Вы уверены, что имя параметра "code", а не "signed_request"? –

+0

Хорошо, я понял! –

ответ

3

Скопировано из Facebook API's OAuth Page

With this code in hand, you can proceed to the next step, app authentication, to gain the access token you need to make API calls. In order to authenticate your app, you must pass the authorization code and your app secret to the Graph API token endpoint - along with the exact same redirect_uri used above - at https://graph.facebook.com/oauth/access_token. The app secret is available from the Developer App and should not be shared with anyone or embedded in any code that you will distribute (you should use the client-side flow for these scenarios).

https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID&redirect_uri=YOUR_URL& client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE

If your app is successfully authenticated and the authorization code from the user is valid, the authorization server will return the access token.

Так что да, это довольно стандартный для OAuth. Возьмите код успеха, перенесите его в указанный выше URL (с соответствующими client_id, client_secret и redirect_uri), и вы должны быть наличными. Вы получите маркер доступа обратно, и это время от времени.

Прочтите статью Facebook API. Это было довольно информативно. Если у вас есть вопросы по этому поводу, я буду рад помочь.

Удачи :)

+0

Мой вопрос не в том, как идти с вызывающим графом api.// Этот параметр содержит «# _ = _» в конце в фактическом «коде», но я не могу получить его через request.getParameter (" code "). Это веб-приложение java. То есть, если я вызываю String signedReq = request.getParameter («код»); Я получаю код без последней '# _ = _' подстроки, но я могу видеть это в URL-адресе. – user1098255

+0

Это странно ... Если я ошибаюсь, это означает, что FB отправляет вам безопасный код без URL. Я предполагаю, что вы попытались продолжить оба без вышеупомянутой подстроки и с подстрокой, добавленной вручную? Какой из них работает? Если «код» нуждается в подстроке для работы, возвращает ли FB код, который не заканчивается этой точной подстрокой? вам может потребоваться добавить его до конца вручную. При этом JavaDoc request.getParameter() не упоминает ни одного случая, когда он не вернет вам все значение параметра. Все ставки неактивны, хотя если значение не является безопасным URL ... –

+0

Сделал немного Google. Материал после «#» называется Идентификатором фрагмента. HttpServletRequest не упоминает о них в своем JavaDoc. Так что это странно ... –

Смежные вопросы