44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { ProvidersInterface } from '@gitroom/backend/services/auth/providers.interface';
|
|
import { NeynarAPIClient } from '@neynar/nodejs-sdk';
|
|
|
|
const client = new NeynarAPIClient({
|
|
apiKey: process.env.NEYNAR_SECRET_KEY || '00000000-000-0000-000-000000000000',
|
|
});
|
|
|
|
export class FarcasterProvider implements ProvidersInterface {
|
|
generateLink() {
|
|
return '';
|
|
}
|
|
|
|
async getToken(code: string) {
|
|
const data = JSON.parse(Buffer.from(code, 'base64').toString());
|
|
const status = await client.lookupSigner({signerUuid: data.signer_uuid});
|
|
if (status.status === 'approved') {
|
|
return data.signer_uuid;
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
async getUser(providerToken: string) {
|
|
const status = await client.lookupSigner({signerUuid: providerToken});
|
|
if (status.status !== 'approved') {
|
|
return {
|
|
id: '',
|
|
email: '',
|
|
};
|
|
}
|
|
|
|
|
|
// const { client, oauth2 } = clientAndYoutube();
|
|
// client.setCredentials({ access_token: providerToken });
|
|
// const user = oauth2(client);
|
|
// const { data } = await user.userinfo.get();
|
|
|
|
return {
|
|
id: String('farcaster_' + status.fid),
|
|
email: String('farcaster_' + status.fid),
|
|
};
|
|
}
|
|
}
|