Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
386 changes: 206 additions & 180 deletions dist/hello.all.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/hello.all.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/hello.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*! hellojs v1.20.0 - (c) 2012-2023 Andrew Dodson - MIT https://adodson.com/hello.js/LICENSE */
/*! hellojs v1.20.0 - (c) 2012-2025 Andrew Dodson - MIT https://adodson.com/hello.js/LICENSE */
// ES5 Object.create
if (!Object.create) {

Expand Down
2 changes: 1 addition & 1 deletion dist/hello.min.js

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions docs/instagram.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Instagram OAuth Deprecation Notice

Instagram has fully deprecated its standalone OAuth API.
The old endpoints (https://instagram.com/oauth/authorize/) no longer work and always return a cancellation error or 405 on logout.

This provider is deprecated unless rewritten to use Facebook Graph API with server-side login.

Logout has been updated to use POST + CSRF token when possible, but the Instagram API still blocks cross-site logout.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion redirect.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

This page is used for authentication as well as POST using the Iframe+form+hash communication hack.


-->
<html>
<head>
Expand Down
17 changes: 17 additions & 0 deletions src/modules/google.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
auth: 'https://accounts.google.com/o/oauth2/v2/auth',
grant: 'https://www.googleapis.com/oauth2/v4/token'
},
redirect_uri: window.location.origin + '/redirect.html',


// Authorization scopes
scope: {
Expand All @@ -30,6 +32,7 @@
create_event: '',
offline_access: ''
},


scope_delim: ' ',

Expand All @@ -49,6 +52,7 @@
if (p.options.force) {
p.qs.prompt = 'consent';
}

},

// API base URI
Expand Down Expand Up @@ -212,6 +216,19 @@

return o;
}
function generateCodeVerifier() {
const array = new Uint8Array(32);
window.crypto.getRandomValues(array);
return btoa(String.fromCharCode.apply(null, array))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

async function generateCodeChallenge(verifier) {
const data = new TextEncoder().encode(verifier);
const digest = await crypto.subtle.digest("SHA-256", data);
return btoa(String.fromCharCode.apply(null, new Uint8Array(digest)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

function formatImage(image) {
return {
Expand Down
Loading