manikantasannidhi
04/24/2023, 10:37 AMrp_st
04/24/2023, 10:44 AMrp_st
04/24/2023, 10:44 AMmanikantasannidhi
04/24/2023, 10:45 AMrp_st
04/24/2023, 10:45 AMmanikantasannidhi
04/24/2023, 10:45 AMmanikantasannidhi
04/24/2023, 10:46 AMsattvikc
04/24/2023, 11:07 AMmanikantasannidhi
04/24/2023, 11:08 AMsattvikc
04/24/2023, 11:09 AMmanikantasannidhi
04/24/2023, 11:09 AMsattvikc
04/24/2023, 11:10 AMmanikantasannidhi
04/24/2023, 11:10 AMsattvikc
04/24/2023, 11:14 AMmanikantasannidhi
04/24/2023, 11:14 AMsattvikc
04/24/2023, 11:15 AMmanikantasannidhi
04/24/2023, 11:15 AMsattvikc
04/24/2023, 11:15 AMmanikantasannidhi
04/24/2023, 11:17 AMsattvikc
04/24/2023, 11:20 AMsattvikc
04/24/2023, 1:07 PMsattvikc
04/24/2023, 1:08 PMreact-google-one-tap-login github
on the frontend ?manikantasannidhi
04/24/2023, 1:08 PMsattvikc
04/24/2023, 1:08 PMmanikantasannidhi
04/24/2023, 1:09 PMmanikantasannidhi
04/24/2023, 1:10 PMsattvikc
04/24/2023, 1:10 PMmanikantasannidhi
04/24/2023, 1:10 PMsattvikc
04/24/2023, 1:11 PMoneTap
set to true along with the credential returned by google on the code paramsattvikc
04/24/2023, 1:11 PMsattvikc
04/24/2023, 1:13 PMpython
class GoogleOneTap(thirdparty.Google):
async def get_profile_info(self, auth_code_response, user_context):
return UserInfo(
auth_code_response['sub'],
UserInfoEmail(auth_code_response['email'], auth_code_response['email_verified'].lower() == 'true')
)
def thirdparty_api_override(original_implementation):
osign_in_up_post = original_implementation.sign_in_up_post
async def custom_sign_in_up_post(provider, code, redirect_uri, client_id, auth_code_response, api_options, user_context):
request = user_context["_default"]["request"]
request_body = json.loads(request.request.body)
if not request_body.get('oneTap'):
return await osign_in_up_post(provider, code, redirect_uri, client_id, auth_code_response, api_options, user_context)
resp = requests.get('https://oauth2.googleapis.com/tokeninfo', {'id_token': request_body.get('code')}).json()
return await osign_in_up_post(GoogleOneTap("", ""), None, None, None, resp, api_options, user_context)
original_implementation.sign_in_up_post = custom_sign_in_up_post
return original_implementation
sattvikc
04/24/2023, 1:14 PMsattvikc
04/24/2023, 1:14 PMmanikantasannidhi
04/24/2023, 1:15 PMsattvikc
04/24/2023, 1:17 PMpython
thirdparty.init(
sign_in_and_up_feature=thirdparty.SignInAndUpFeature(providers=[
# We have provided you with development keys which you can use for testing.
# IMPORTANT: Please replace them with your own OAuth keys for production use.
Google(
client_id='1060725074195-kmeum4crr01uirfl2op9kd5acmi9jutn.apps.googleusercontent.com',
client_secret='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'
),
]),
override=InputOverrideConfig(
apis=thirdparty_api_override
)
),
sattvikc
04/24/2023, 1:21 PMmanikantasannidhi
04/24/2023, 1:30 PMmanikantasannidhi
04/24/2023, 1:30 PMsattvikc
04/24/2023, 1:30 PMsattvikc
04/24/2023, 1:31 PMsattvikc
04/24/2023, 1:31 PMmanikantasannidhi
04/24/2023, 1:32 PMsattvikc
04/24/2023, 1:32 PMts
ThirdParty.init({
signInAndUpFeature: {
providers: [Github.init(), Google.init(), Apple.init()],
},
preAPIHook: async (context) => {
if (context.userContext.oneTap) {
const body = JSON.parse(context.requestInit.body as string)
body.oneTap = true;
context.requestInit.body = JSON.stringify(body);
}
return context;
}
}),
manikantasannidhi
04/24/2023, 1:33 PMsattvikc
04/24/2023, 1:34 PMmanikantasannidhi
04/24/2023, 1:34 PMsattvikc
04/24/2023, 1:34 PMsattvikc
04/24/2023, 1:34 PMmanikantasannidhi
04/24/2023, 1:35 PMsattvikc
04/24/2023, 1:35 PMts
const doLogin = async (data: any) => {
function insertUrlParam(key: string, value: string) {
let searchParams = new URLSearchParams(window.location.search);
searchParams.set(key, value);
let newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' + searchParams.toString();
window.history.pushState({path: newurl}, '', newurl);
}
if (data.credential) {
await ThirdParty.getAuthorisationURLWithQueryParamsAndSetState({ providerId: "google", authorisationURL: window.location.toString() })
const stateInfo = await ThirdParty.getStateAndOtherInfoFromStorage();
if (data.credential && stateInfo !== undefined) {
insertUrlParam("code", data.credential);
insertUrlParam("state", stateInfo.stateForAuthProvider);
ThirdParty.signInAndUp({userContext: {oneTap: true}});
}
}
}
sattvikc
04/24/2023, 1:36 PMmanikantasannidhi
04/24/2023, 1:36 PMmanikantasannidhi
04/24/2023, 1:36 PMsattvikc
04/24/2023, 1:37 PMsattvikc
04/24/2023, 1:38 PMmanikantasannidhi
04/24/2023, 1:38 PMsattvikc
04/24/2023, 1:40 PMts
import ThirdParty from 'supertokens-auth-react/recipe/thirdparty'
import GoogleOneTapLogin from './google-one-tap';
export default function SomeRoute() {
const doLogin = async (data: any) => {
function insertUrlParam(key: string, value: string) {
let searchParams = new URLSearchParams(window.location.search);
searchParams.set(key, value);
let newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' + searchParams.toString();
window.history.pushState({path: newurl}, '', newurl);
}
if (data.credential) {
await ThirdParty.getAuthorisationURLWithQueryParamsAndSetState({ providerId: "google", authorisationURL: window.location.toString() })
const stateInfo = await ThirdParty.getStateAndOtherInfoFromStorage();
if (data.credential && stateInfo !== undefined) {
insertUrlParam("code", data.credential);
insertUrlParam("state", stateInfo.stateForAuthProvider);
ThirdParty.signInAndUp({userContext: {oneTap: true}});
}
}
}
return (
<div className="fill" id="home-container">
<GoogleOneTapLogin onSuccess={doLogin} googleAccountConfigs={{ client_id: "your-google-client-id-here" }} />
<p>Use one tap login to continue</p>
</div>
)
}
sattvikc
04/24/2023, 1:41 PMmanikantasannidhi
04/24/2023, 1:42 PMsattvikc
04/24/2023, 1:45 PMmanikantasannidhi
04/25/2023, 10:45 AMmanikantasannidhi
04/25/2023, 10:46 AMsattvikc
04/25/2023, 10:46 AMmanikantasannidhi
04/25/2023, 10:46 AMmanikantasannidhi
04/25/2023, 10:47 AMmanikantasannidhi
04/25/2023, 10:47 AMsattvikc
04/25/2023, 10:47 AMsattvikc
04/25/2023, 10:47 AMsattvikc
04/25/2023, 10:47 AMmanikantasannidhi
04/25/2023, 10:47 AMmanikantasannidhi
04/25/2023, 10:48 AMsattvikc
04/25/2023, 10:48 AMmanikantasannidhi
04/25/2023, 10:48 AMsattvikc
04/25/2023, 10:48 AMmanikantasannidhi
04/25/2023, 10:49 AMmanikantasannidhi
04/25/2023, 10:49 AMsattvikc
04/25/2023, 10:50 AMhttps://cdn.discordapp.com/attachments/1100007631952826418/1100373363081367582/image.pngâ–¾
sattvikc
04/25/2023, 10:51 AMmanikantasannidhi
04/25/2023, 10:51 AMmanikantasannidhi
04/25/2023, 10:56 AMmanikantasannidhi
04/25/2023, 10:56 AMsattvikc
04/25/2023, 11:48 AMsattvikc
04/25/2023, 11:48 AMsattvikc
04/25/2023, 11:49 AMthirdparty_sign_in_up
manikantasannidhi
04/26/2023, 7:26 AMmanikantasannidhi
04/26/2023, 7:26 AMrp_st
04/26/2023, 7:27 AMmanikantasannidhi
04/26/2023, 7:56 AMmanikantasannidhi
04/26/2023, 7:58 AM