Получение «кода» и обмен кода на токен - это то, что вы обычно делаете, когда выполняете аутентификацию в рабочем процессе на стороне сервера. Это может быть немного красной сельди в вашем сценарии. Есть более простые способы получить токен доступа напрямую.
Было бы полезно иметь больше контекста (включая код), показывающего, как вы получаете offline_access (javascript, OAuth на стороне сервера, ...?)
Когда вы получаете offline_access через Javascript SDK, который, по моему мнению, обеспечивает лучший пользовательский опыт, вы получите токен доступа в ответе от Facebook:
FB.login(function (response) {
if (response.session) {
if (response.perms) {
var accesstoken = response.session.access_token;
// do something with the token...save it, use it, etc.
} else {
// re-prompt for permissions
}
}
}, { perms: 'offline_access' });
Как только у вас есть это в javascript, вы можете вставить его в скрытое поле формы, поместить его в сообщение ajax на ваш сервер или что-то еще.
Обратите внимание, что, по моему опыту, вам на самом деле не нужен сохраненный токен доступа пользователя для выполнения вызовов API в автономном режиме для всех методов API. В некоторых случаях вы можете просто использовать токен доступа к приложению, и Facebook позволит ему работать, если у вас есть offline_access и другие необходимые разрешения. На прошлой неделе они опубликовали сообщение в блоге для разработчиков, в котором говорилось, что вам нужен токен для некоторых вызовов API, если он ранее не требовался, так что это может измениться.
Также помните, что эти токены могут испортиться. Например, если пользователь изменяет пароль своей учетной записи Facebook, он делает недействительными все токены доступа. Поэтому полезно их протестировать, перехватить исключения OAuth и получить способ привлечь внимание пользователя, чтобы повторно запросить разрешения и получить новый токен доступа.