-
-
Notifications
You must be signed in to change notification settings - Fork 475
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(connector): add hugging face connector
- Loading branch information
Showing
10 changed files
with
876 additions
and
113 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@logto/connector-huggingface": minor | ||
--- | ||
|
||
Add Hugging Face social connector |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Hugging Face connector | ||
|
||
The official Logto connector for Hugging Face social sign-in. | ||
|
||
**Table of contents** | ||
|
||
- [Hugging Face connector](#hugging-face-connector) | ||
- [Get started](#get-started) | ||
- [Sign in with Hugging Face account](#sign-in-with-hugging-face-account) | ||
- [Create an OAuth app in the Hugging Face](#create-an-oauth-app-in-the-hugging-face) | ||
- [Managing Hugging Face OAuth apps](#managing-hugging-face-oauth-apps) | ||
- [Configure your connector](#configure-your-connector) | ||
- [Config types](#config-types) | ||
- [Test Hugging Face connector](#test-hugging-face-connector) | ||
- [Reference](#reference) | ||
|
||
|
||
## Get started | ||
|
||
The Hugging Face connector enables end-users to sign in to your application using their own Hugging Face accounts via Hugging Face OAuth / OpenID connect flow. | ||
|
||
## Sign in with Hugging Face account | ||
|
||
Go to the [Hugging Face website](https://huggingface.co/) and sign in with your Hugging Face account. You may register a new account if you don't have one. | ||
|
||
## Create an OAuth app in the Hugging Face | ||
|
||
Follow the [Creating an oauth app](https://huggingface.co/docs/hub/en/oauth#creating-an-oauth-app) guide, and register a new application. | ||
|
||
In the creation process, you will need to provide the following information: | ||
|
||
- **Application Name**: The name of your application. | ||
- **Homepage URL**: The URL of your application's homepage or landing page. | ||
- **Logo URL**: The URL of your application's logo. | ||
- **Scopes**: The scopes allowed for the OAuth app. For Hugging Face connector, usually use `profile` to get the user's profile information and `email` to get the user's email address. Ensure these scopes are allowed in your Hugging Face OAuth app if you want to use them. | ||
- **Redirect URI**: The URL to redirect the user to after they have authenticated. You can find the redirect URI in the Logto Admin Console when you're creating a Hugging Face connector or in the created Hugging Face connector details page. | ||
|
||
## Managing Hugging Face OAuth apps | ||
|
||
Go to the [Connected Applications](https://huggingface.co/settings/connected-applications) page, you can add, edit or delete existing OAuth apps. | ||
You can also find `Client ID` and generate `App secrets` in corresponding OAuth app settings pages. | ||
|
||
## Configure your connector | ||
|
||
Fill out the `clientId` and `clientSecret` field with _Client ID_ and _App Secret_ you've got from OAuth app detail pages mentioned in the previous section. | ||
|
||
`scope` is a space-delimited list of [Hugging Face supported scopes](https://huggingface.co/docs/hub/en/oauth#currently-supported-scopes). If not provided, scope defaults to be `profile`. For Hugging Face connector, the scope you may want to use is `profile` and `email`. `profile` scope is required to get the user's profile information, and `email` scope is required to get the user's email address. Ensure you have allowed these scopes in your Hugging Face OAuth app (configured in [Create an OAuth app in the Hugging Face](#create-an-oauth-app-in-the-hugging-face) section). | ||
|
||
### Config types | ||
|
||
| Name | Type | | ||
|--------------|--------| | ||
| clientId | string | | ||
| clientSecret | string | | ||
| scope | string | | ||
|
||
|
||
## Test Hugging Face connector | ||
|
||
That's it. The Hugging Face connector should be available now. Don't forget to [Enable connector in sign-in experience](https://docs.logto.io/docs/recipes/configure-connectors/social-connector/enable-social-sign-in/). | ||
|
||
## Reference | ||
|
||
- [Hugging Face - Sign in with Hugging Face](https://huggingface.co/docs/hub/en/oauth#sign-in-with-hugging-face) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
{ | ||
"name": "@logto/connector-huggingface", | ||
"version": "0.0.0", | ||
"description": "Hugging Face connector implementation.", | ||
"author": "Silverhand Inc. <[email protected]>", | ||
"dependencies": { | ||
"@logto/connector-kit": "workspace:^3.0.0", | ||
"@logto/connector-oauth": "workspace:^1.2.0", | ||
"@silverhand/essentials": "^2.9.0", | ||
"ky": "^1.2.3", | ||
"zod": "^3.22.4" | ||
}, | ||
"main": "./lib/index.js", | ||
"module": "./lib/index.js", | ||
"exports": "./lib/index.js", | ||
"license": "MPL-2.0", | ||
"type": "module", | ||
"files": [ | ||
"lib", | ||
"docs", | ||
"logo.svg", | ||
"logo-dark.svg" | ||
], | ||
"scripts": { | ||
"precommit": "lint-staged", | ||
"build:test": "rm -rf lib/ && tsc -p tsconfig.test.json --sourcemap", | ||
"build": "rm -rf lib/ && tsc -p tsconfig.build.json --noEmit && rollup -c", | ||
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental", | ||
"lint": "eslint --ext .ts src", | ||
"lint:report": "pnpm lint --format json --output-file report.json", | ||
"test": "vitest src", | ||
"test:ci": "pnpm run test --silent --coverage", | ||
"prepublishOnly": "pnpm build" | ||
}, | ||
"engines": { | ||
"node": "^20.9.0" | ||
}, | ||
"eslintConfig": { | ||
"extends": "@silverhand", | ||
"settings": { | ||
"import/core-modules": [ | ||
"@silverhand/essentials", | ||
"got", | ||
"nock", | ||
"snakecase-keys", | ||
"zod" | ||
] | ||
} | ||
}, | ||
"prettier": "@silverhand/eslint-config/.prettierrc", | ||
"publishConfig": { | ||
"access": "public" | ||
}, | ||
"devDependencies": { | ||
"@rollup/plugin-commonjs": "^25.0.7", | ||
"@rollup/plugin-json": "^6.1.0", | ||
"@rollup/plugin-node-resolve": "^15.2.3", | ||
"@rollup/plugin-typescript": "^11.1.6", | ||
"@silverhand/eslint-config": "6.0.1", | ||
"@silverhand/ts-config": "6.0.0", | ||
"@types/node": "^20.11.20", | ||
"@types/supertest": "^6.0.2", | ||
"@vitest/coverage-v8": "^1.4.0", | ||
"eslint": "^8.56.0", | ||
"lint-staged": "^15.0.2", | ||
"nock": "14.0.0-beta.6", | ||
"prettier": "^3.0.0", | ||
"rollup": "^4.12.0", | ||
"rollup-plugin-output-size": "^1.3.0", | ||
"supertest": "^7.0.0", | ||
"typescript": "^5.3.3", | ||
"vitest": "^1.4.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import type { ConnectorMetadata } from '@logto/connector-kit'; | ||
import { ConnectorPlatform } from '@logto/connector-kit'; | ||
import { clientIdFormItem, clientSecretFormItem, scopeFormItem } from '@logto/connector-oauth'; | ||
|
||
export const authorizationEndpoint = 'https://huggingface.co/oauth/authorize'; | ||
export const tokenEndpoint = 'https://huggingface.co/oauth/token'; | ||
export const userInfoEndpoint = 'https://huggingface.co/oauth/userinfo'; | ||
|
||
export const defaultMetadata: ConnectorMetadata = { | ||
id: 'huggingface-universal', | ||
target: 'huggingface', | ||
platform: ConnectorPlatform.Universal, | ||
name: { | ||
en: 'Hugging Face', | ||
}, | ||
logo: './logo.svg', | ||
logoDark: null, | ||
description: { | ||
en: 'Hugging Face is a machine learning (ML) and data science platform and community that helps users build, deploy and train machine learning models.', | ||
}, | ||
readme: './README.md', | ||
formItems: [ | ||
clientIdFormItem, | ||
clientSecretFormItem, | ||
{ | ||
...scopeFormItem, | ||
description: | ||
"`profile` is required to get user's profile information, `email` is required to get user's email address. These scopes can be used individually or in combination; if no scopes are specified, `profile` will be used by default.", | ||
}, | ||
], | ||
}; | ||
|
||
export const defaultTimeout = 5000; |
Oops, something went wrong.