2014-10-14 4 views
0

Я работаю над интеграцией с Facebook для интеграции на свой сайт и хочу получить доступ к токену доступа для дальнейших возможностей взаимодействия, только после входа в систему. Я получил процесс входа в систему, используя javascript SDK, и я могу получить информацию пользователя, запросив край/me. Из того, что я прочитал, я должен иметь возможность получить мой сервер для доступа к токену пользователя, запросив его на apo-сервере oauth/access_token.Получение токена доступа facebook пользователя

Моя структура запроса выглядит следующим образом

HTTParty.get(URI.escape("https://graph.facebook.com/oauth/access_token?client_id=1398254717088095&redirect_uri=http://portal.ggwifi.net/test_portal/&client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxx&code=5TPMo3WelM6aDm7zbvVBkZTlV_5ydQaHPP26Ytfv7Hg.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiJBUUFZUVVfS3laTk9hcjFPN0JtUTdVUXhudmpRQjF5SjEwN3J1dXRBVmF4WEZ0V3lzY3g0MmxFUXlwZ2JvYzFsbmpGLUxXZDYwanRMNUtPeU5xMVlGUGRjSzJuQ3dTQ0ctOXEwQmV5eUFTM2dnck5uN1NiRWVZY2Uzck03YmpOYU5vY1R0NVJDSWlrMUZybWN5aDRMVEp6R3Q3dmN1M18zY0ZSbklyc1ZNcGN2cEtxajJ1QjRzUFA1aE52cDV6VXBIaktnd3Y5QU5HZHd5b2ZFYjViRHk4eHEzYVFTQVg0QWNwdUJoemFUWGpINkZ6WDVra29GbTh2Zzg5M1oxVExGRWJsektzSTJUdW9fX1ZlLXN4Si1KUDYyeWg0blhQRjc0LUJRelJBenhsbHNIUm05VUhKemNQbW8wYk04MDB3dXd6dDJsb210YkRvenhUQXFCdHk1T1NiYyIsImlzc3VlZF9hdCI6MTQxMzMxMzQzNSwidXNlcl9pZCI6IjIyMzAxNDc1In0")) 

где код является значение, хранящееся в печенье [: fbsr_1398254717088095].

Я попытался это, но каждый раз, когда я пытаюсь это терпит неудачу с ошибкой: «»

{ 
    "error": { 
    "message": "Invalid verification code format.", 
    "type": "OAuthException", 
    "code": 100 
    } 
} 

Я читал где-то, что код должен быть разделен на части на, но у меня попробовал это также (используя часть до периода, а также часть после), но это тоже не сработало.

Нужно ли мне манипулировать кодом, хранящимся в файле cookie, каким-то другим способом, чтобы получить токен? Что мне здесь не хватает?

PS - Я также пробовал использовать графический api explorer для получения токена, вставляя в мое значение cookie, но получаю ту же ошибку.

+1

Конечно, это не сработает. Способ получить токен доступа - показать пользователю диалоговое окно входа в систему. И пользователь может выбрать ваше приложение или нет. Использование значений из файлов cookie не будет работать – WizKid

+0

Пользователь уже принял диалоговое окно входа в систему и предоставил разрешения для моего приложения. Но как мне сделать вызовы API-сервера от сервера, используя токен доступа пользователя? Мои исследования показали, что файл cookie fbsr является подписанным запросом, который должен быть расшифрован с помощью секретного ключа моего приложения для получения токена доступа, но я не могу понять, как это сделать. – ldean

+0

Файл cookie fbsr используется на facebook.com и ничего не нужно использовать. Вы просто сохраняете токен доступа, который вы получили, когда пользователь принял диалоговое окно входа в систему и предоставил разрешения для ваших приложений – WizKid

ответ

0

Для чего это стоит, я нашел свое решение в документации facebook в https://developers.facebook.com/docs/facebook-login/using-login-with-games/#parsingsr

Куки фактически Подписанный запрос, но это должно быть истолковано, используя следующие шаги:

- Split the signed request into two parts delineated by a '.' character (eg. 238fsdfsd.oijdoifjsidf899) 
- Decode the first part - the encoded signature - from base64url 
- Decode the second part - the 'payload' - from base64url and then decode the resultant JSON object 

Мой единственный проблема в том, что файл cookie, по-видимому, истекает очень быстро, поэтому его нельзя использовать очень долго, но я могу хранить токен в качестве переменной сеанса для постоянного доступа api.

Редактировать: Угадайте, что я еще не на 100%, потому что я смог получить токен доступа один раз (но в тестировании и не хранил его в любом месте), но когда я пытаюсь его снова получить, я уже использовал код авторизации. Выход из системы или даже деавторизация приложения и вход в систему не позволяют создать новый код.

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