GitHub OAuth in lua

Я работаю над библиотекой в ​​LUA для приложения для iPad под названием Codea. Я пытаюсь выяснить, использовать OAuth для GitHub Gists. Единственная часть, которую я не могу понять, это как получить токен Auth через код. Я использовал curl в терминале, чтобы получить себе токен, но это, похоже, слишком много для других пользователей.

Я прочитал github api docs несколько раз, но не могу понять, как получить токен программно. Я пытался дублировать метод, который я использовал для GET и POST, но он, похоже, не работает. Я не уверен, как передать имя пользователя и пароль. Я создаю таблицу с необходимыми параметрами, а затем кодирую ее в json. Все, что я пробую, получает ошибку 404 или ошибку 500. Спасибо всем заранее.

local url = "https://api.github.com/authorizations"
local d = {}
d.scopes = {"gist"}
d.note = "AutoGist Codea"
projectAuth = json.encode(d)

opts = { data = projectAuth }
opts.method = "POST"
opts.headers = {Authorization = "basic " .."username:password"}
http.request(url,successCallback,failedCallback,opts)

1 ответ

Решение

Области выходят, но только в 4 квартале 2013 года.

См. " Грядущие изменения OAuth" (октябрь 2013 года, Тим Клим - тклем):

Начиная с сегодняшнего дня, мы возвращаем предоставленные области как часть ответа access_token.
Например, если вы делаете POST с application/json MIME-тип вы увидите дополнительное поле для предоставленных областей.

{
  "access_token":"e72e16c7e42f292c6912e7710c838347ae178b4a",
  "scope":"repo,gist",
  "token_type":"bearer"
  }

Прямо сейчас эти области будут идентичны тем, которые вы запрашивали, но мы переходим к набору функций, который позволит пользователям GitHub редактировать свои области, эффективно предоставляя вашему приложению меньший доступ, чем вы первоначально запрашивали.
Вы должны знать об этой возможности и соответствующим образом корректировать поведение своего приложения.

Некоторые вещи, на которые следует обратить внимание и иметь в виду:

  • Большинство сторонних приложений, использующих GitHub OAuth для идентификации пользователей, имеют лучший успех при принятии, начиная с запроса минимального доступа, с которым приложение может сойти с рук.
    Что-то вроде без прицелов или просто user:email очень вменяемый

  • Важно обрабатывать ошибки, когда пользователи предпочитают предоставлять вам меньше доступа, чем вы изначально запрашивали.
    Теперь, когда мы выходим на access_token В ответ приложения могут предупредить или иным образом связаться со своими пользователями, что они увидят ограниченную функциональность или не смогут выполнить некоторые действия.

  • Приложения всегда могут отправить пользователей обратно через поток, чтобы получить дополнительное разрешение, но не забывайте, что пользователи всегда могут сказать "нет".

Другие вопросы по тегам