Is there a way that I make make a script inside my roblox game access my github repo that is set to private? Maybe using some sort of key? Thanks in advance
Im pretty sure this is impossible, as it uses OAuth which only works on web page. (according to my 10 seconds research)
Sure
You’ll need a token for your GitHub account: Creating a personal access token - GitHub Docs
Pick a base64 encoding function: lua-users wiki: Base Sixty Four
Encode the string "your_username:your_token"
using your favorite of the above functions to get a string like "b2J2aW91c2x5IHRoaXMgaXNuJ3QgbXkgdG9rZW4="
And then use that to set the Authorization header:
local result = HttpService:GetAsync("https://api.github.com/repos/your_username/your_repo", true, {
Authorization = "Basic " .. your_base64_encoded_username_token_string
}
All put together
local EncodeBase64 -- from http://lua-users.org/wiki/BaseSixtyFour
do
-- character table string
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-- encoding
function EncodeBase64(data)
return ((data:gsub('.', function(x)
local r,b='',x:byte()
for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
return r;
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
if (#x < 6) then return '' end
local c=0
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
return b:sub(c+1,c+1)
end)..({ '', '==', '=' })[#data%3+1])
end
end
local function GetWithBasicAuthAsync(username: string, token: string, url: string, nocache: boolean?, additionalHeaders: any?)
local headers = additionalHeaders and table.clone(additionalHeaders) or {}
local auth = EncodeBase64(username .. ":" .. token)
headers["Authorization"] = "Basic " .. auth
return game:GetService("HttpService"):GetAsync(url, nocache, headers)
end
local http = game:GetService("HttpService")
local user = "your_username"
local token = "b2J2aW91c2x5IHRoaXMgaXNuJ3QgbXkgdG9rZW4="
local result = GetWithBasicAuthAsync(user, token, "https://api.github.com/repos/your_username/your_repo")
print(http:JSONDecode(result))
How would I get this? Sorry for slow response.
The first link I provided is a tutorial by GitHub explaining how to get an API token.
ok so i got it working, but where is the code? when it prints whatever it gives me a huge list of thigs. where can i find my code in that list?
The API endpoint I gave (https://api.github.com/repos/…
) was just an example. It gives you a bunch of information about your repo.
There are many other endpoints that GitHub provides, which is available on their documentation page (look for “REST API”):
For instance this looks promising:
It describes the endpoint https://api.github.com/repos/OWNER/REPO/contents/PATH
, which apparently will give you the file content encoded in base64 (so you’ll need to grab a DEcoder from that same base64 link).
In other words, add /contents/path/to/your/file
to the URL. Then you can decode the contents.