# Overview

humanID is a nonprofit, open-source initiative building a replacement for social media logins like “Login with Facebook”.

Unlike existing logins, humanID allows users to sign onto third- party website or applications completely anonymously, without sharing any personal data with the platform. At the same time, humanID effectively blocks bots and spam from those platforms and reduces the risk of large data leaks.

Learn more about humanID and integrate our SDK!

**Here's what makes humanID so great:**

[Why humanID](https://human-id.org/partner-with-us/)

* No accessible user data is stored, so users remain fully anonymous
* Fast and easy to login
* It's free for end users
* Blocks automated accounts, cyber-bullies, trolls and freeloaders from websites and applications
* Makes bot networks at least 40x more costly to operate and easier to identify
* Gives platforms the ability to turn privacy and trust into a competitive advantage

**More on humanID:**&#x20;

* [How It Works](https://human-id.org/products/#how-it-works)
* [humanID White Paper](https://github.com/human-internet/humanid-documentation/blob/master/White%20Paper%20-%20FINAL%202022.pdf)

|           SDK Integration Guides          |
| :---------------------------------------: |
|     [iOS](/ios-sdk-integration-guide)     |
| [Android](/android-sdk-integration-guide) |
|     [Web](/web-sdk-integration-guide)     |
|   [React](/react-sdk-integration-guide)   |
|  [Golang](/go-lang-sdk-integration-guide) |
| [Flutter](/flutter-sdk-integration-guide) |


# Usage Guidelines

## Overview

The humanID brand is built upon a foundation of trust with our users and community. The consistent representation of humanID creative assets is essential for maintaining this standard. The following guidelines are intended for partners who are integrating humanID with their application or platform.

### Buttons

humanID provides a series of buttons you can leverage to enable your users to log in to your application or platform.

#### Text Guidelines

* The preferred text is “Anonymous Login with humanID”
* Alternate options include, in order of preference: Anonymous Sign in with humanID, Continue with humanID
* Never display only the icon or logo without the associated call to action
* If web text must be utilized for the creation of a custom button, never capitalize the “h” in “humanID”s

#### Design Guidelines

* Text should be centered and aligned in the button both vertically and horizontally
* When space permits, the humanID icon should be utilized to the left of the text
* Include a minimum of 7px padding from the icon to the edge of the button
* The preferred button color is humanID blue: #023B60
* The secondary preferred button color is black or white
* The ideal font size is 17, as demonstrated in the buttons below. The font size should scale proportionally with the size of the button
* Contrast borders should be avoided, with exception of a white button where a black border of 1px is acceptable

### Sample Buttons

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbbSWPPdzqwBMlWppLN%2F-McPUoVg7Icjyr6aE9EG%2F-McUwtpa0SMabEfJXpHV%2Flogin_button_examples.png?alt=media\&token=8026fe80-c0bb-42f8-8c95-e96e3cfdc44a)

### Examples of Proper Integration

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbbSWPPdzqwBMlWppLN%2F-McPUoVg7Icjyr6aE9EG%2F-McUx2-yzK3hvMkgKDU8%2Fproper_integration.png?alt=media\&token=53f99156-3256-4f66-9583-412a16c38e5f)


# iOS SDK Integration Guide

## **Overview**

1. [Requirements](/ios-sdk-integration-guide#requirements)
2. [Steps](/ios-sdk-integration-guide#steps)
3. [Sample](/ios-sdk-integration-guide#sample)

## Requirements

* Xcode 11.4+
* Swift 5.0
* iOS 11.0+

Please update to the latest SDK!

## Steps

1. [Installation](/ios-sdk-integration-guide#1-installation)
2. [Get Credentials](/ios-sdk-integration-guide#2-get-credentials)
3. [Configuration](/ios-sdk-integration-guide#3-configuration)
4. [Using the iOS SDK](/ios-sdk-integration-guide#4-using-the-ios-sdk)

### 1. Installation

The humanID SDK is available through [CocoaPods](https://cocoapods.org/pods/HumanIDSDK).\
To install it, simply add the following line to your Podfile:

```
pod 'HumanIDSDK'
```

### **2. Get Credentials**

Get the clientID and clientSecret through the [App Registration Form](https://developers.human-id.org/home/).

### **3. Configuration**

Add this code to your AppDelegate.swift and make sure all the values are fulfilled.

```bash
import HumanIDSDK

           @UIApplicationMain
           class AppDelegate: UIResponder, UIApplicationDelegate {

             func application(_ application: UIApplication, didFinishLaunchingWithOptions 
launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
                HumanIDSDK.shared.configure(clientID: "YOUR_CLIENT_ID", clientSecret: 
"YOUR_CLIENT_SECRET")
             }
           }
```

### 4. Using the iOS SDK

Add this code to your ViewController file. We recommend you wrap this in a function that handles the login button.

```bash
import HumanIDSDK

           class YourViewController: UIViewController {

           @IBAction func yourLoginAction(_ sender: Any) {
               HumanIDSDK.shared.requestOtp(view: self, name: "YOUR_APPLICATION_NAME", image: "YOUR_APPLICATION_LOGO")
               }
           }

           extension YourViewController: RequestOTPDelegate {

           func login(with token: String) {
               // TODO You can persist our token here.
               }
           }
```

### 5. You Are All Set!

Your iOS app should now be integrated with the humanID login.

## Sample

See our Github for a full [sample](https://github.com/human-internet/humanid-ios-sdk/tree/master/Example) to learn more!

* **Warning!** To run the example project, clone the repo, and run pod install from the Example directory first.


# Android SDK Integration Guide

## Overview

1. [Requirements](/android-sdk-integration-guide#requirements)
2. [Steps](/android-sdk-integration-guide#steps)
3. [Sample](/android-sdk-integration-guide#sample)

## Requirements

* API Level 18 or higher
* Kotlin

Please update to the latest SDK!

## Steps

1. [Downloads](/android-sdk-integration-guide#1-downloads)
2. [Get Credentials](/android-sdk-integration-guide#2-get-credentials)
3. [Configuration](/android-sdk-integration-guide#3-configuration)
4. [Using the SDK in Kotlin](/android-sdk-integration-guide#4-using-the-sdk-in-kotlin)
5. [Using the SDK in Java](/android-sdk-integration-guide#5-using-the-sdk-in-java)

### 1. Downloads

```bash
allprojects {
               repositories {
               ...
                   maven { url 'https://jitpack.io' }
               }
           }
           .
           .
           .
           dependencies {
               implementation 'com.github.human-internet:humanid-android-sdk:0.0.4’
           }
```

### 2. Get Credentials

Get the clientID and clientSecret through the [App Registration Form](https://developers.human-id.org/home/)

### 3. Configuration

Add this code to your AndroidManifest.xml. Make sure that all metadata is fulfilled.

```bash
<meta-data  
           android:name="com.humanid.sdk.applicationIcon"  
           android:resource="@drawable/ic_app_icon"/>
<meta-data
           android:name="com.humanid.sdk.applicationName"
           android:value="@string/app_name"/>
<meta-data  
           android:name="com.humanid.sdk.applicationId"
           android:value="YOUR_APP_ID"/>
<meta-data
           android:name="com.humanid.sdk.applicationSecret"
           android:value="YOUR_APP_SECRET"/>
```

### 4. **Using the SDK in Kotlin**

Add this code to your Activity or Fragment file. We recommend you wrap this in a function that handles the login button.

```bash
LoginManager.getInstance(this).registerCallback(object : LoginCallback {
               override fun onCancel() {  }

             override fun onSuccess(exchangeToken: String) {
                 //todo: send the exchangeToken to your server
               }

             override fun onError(errorMessage: String) {  }
             })
             ...
             ..
             .
             override
             fun onActivityResult(requestCode: Int, resultCode:Int, data: Intent?) {
               LoginManager.getInstance(this).onActivityResult(requestCode, resultCode, 
data)
               super.onActivityResult(requestCode, resultCode, data)
             }
```

### 5. **Using the SDK in Java**

Add this code to your Activity or Fragment file. We recommend you wrap this in a function that handles the login button.

```bash
LoginManager.INSTANCE.getInstance(this).registerCallback(new LoginCallback() {
               @Override
               public void onCancel() {}

             @Override
               public void onSuccess(@NotNull String exchangeToken) {
                 //todo: send the exchangeToken to your server
               }

             @Override
               public void onError(@NotNull String errorMessage) {}

           });
           ...
           ..
           .
           @Override
           protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent 
data) {
                LoginManager.INSTANCE.getInstance(this).onActivityResult(requestCode, 
resultCode, data);
                super.onActivityResult(requestCode, resultCode, data);
            }
```

### 6. You Are All Set!

Your Android app should now be integrated with the humanID login.

## Sample

See our Github for a full [sample](https://github.com/human-internet/humanid-android-sdk) to learn more!

* **Warning!** To run the example project, clone the repo, and run pod install from the Example directory first.


# Web SDK Integration Guide

## Overview

1. [Requirements](/web-sdk-integration-guide#requirements)
2. [Steps](/web-sdk-integration-guide#steps)
3. [API Documentation](/web-sdk-integration-guide#api-documentation)
4. [Error Codes](/web-sdk-integration-guide#error-codes)

## Requirements

* **humanID Server Credentials,** Server Credentials consist of:
  * Server Client ID
  * Server Client Secret
* **App Back-end,** to receive authentication Callback from humanID

> Note: Feature to obtain Server Credentials and to configure Callback URL is not yet available at humanID Developer Console. Please contact <developers@human-id.org> and ask for Web Login Integration Set-up

**The authentication process can be illustrated in the following diagram:**

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbbSWPPdzqwBMlWppLN%2F-MbriDOOpfTbjFcS1fk9%2F-MbrkNQawFc60PKATprT%2FhumanID%20WebSDK.svg?alt=media\&token=751243ff-2eef-40c1-b268-cfd2753634c9)

## Steps

1. [Create a Log-in Page](/web-sdk-integration-guide#1-create-a-log-in-page)
2. [Create a Log-in API](/web-sdk-integration-guide#2-create-a-log-in-api)
3. [Create Log-in Callback API](/web-sdk-integration-guide#3-create-a-log-in-callback-api)

### 1. Create a Log-in Page

Create a Log-in page that contains this button.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbbSWPPdzqwBMlWppLN%2F-MbriDOOpfTbjFcS1fk9%2F-Mbrl9VwKPj9LDUXNdp_%2FhID%20Login.png?alt=media\&token=e46e46e3-fa73-447d-82b3-3afd7f9f8914)

Get the Log in button image and put this script below into your Web App:

{% file src="/files/-MhPdfLhiygBUCTtkMgS" %}
Log-in Button Image
{% endfile %}

```
<a href="REPLACE_WITH_TARGET_URL">
    <img src="anonymous-login.svg" alt="Anonymous Login with humanID" height="27"/>
<a>
```

### 2. Create a Log-in API

When user clicks the log-in with button, the Web App will make a request to the App Backend and then the page will be redirected to web-login.human-id.org.

To obtain Log-in URL, App Back-end will call **API Request Web Log-in Session** ([See Documentation below](/web-sdk-integration-guide#api-request-web-log-in-session)). The API call must be done between Host-to-Host in order to protect Server Credentials.

Once App Backend received a response that contains Log-in URL, redirect the page to the given URL to open **humanID Web Log-in Page**

### 3. Create a Log-in Callback API

After the user successfully Log-in with humanID, the page will be redirected to a registered **Log-in Callback URL** (registered on Developer Console). Callback URL contains **Exchange Token**, which is a URL Encoded token that will be used to obtain User ID.

A Log-in callback URL is formatted:

```
<SUCCESS_REDIRECT_URL>?et=<URL_ENCODED_EXCHANGE_TOKEN>
```

For Example:

```
https://api.filmreview.example.com/humanid-callback?et=9F27%2BOpExCGqTrk6caay66fb%2FumdjAN0LnmTRgxj%2Fq70FplDictSay0lUQvTqkJ6S7agUwbfGN5bhbbJnRbrIpBI1goDa7qBgN88ZjYnDZDI9YrgEV1qlxTNyrGQp79Oc4rCQOemZT162StlEXsiEeAZRAwDJfele%2F6vQszqc2PtlwQ%3D%3D
```

URL Decode **Exchange Token** and use it as a parameter to call **API Exchange Token** ([See Details](/web-sdk-integration-guide#api-exchange-token)) to obtain User ID.

Once App Backend receives response from API call, use given User ID to authorize User so User could access the Web App contents.<br>

**Handle Error Response**

If log-in failed, humanID will redirect to configured **Log-in Callback URL** that is formatted:

```
<FAILED_REDIRECT_URL>?code=<ERROR_CODE>&message=<ERROR_MESSAGE>
```

To check whether log-in failed or not, simply check if parameter `et` appended in callback URL<br>

## API Documentation

#### API Request Web Log-in Session

Endpoint URL

```
POST https://core.human-id.org/v0.0.3/server/users/web-login
```

Request

* Headers:

| **Key**         | **Value**                |
| --------------- | ------------------------ |
| `client-id`     | `<SERVER_CLIENT_ID>`     |
| `client-secret` | `<SERVER_CLIENT_SECRET>` |
| `Content-Type`  | `application/json`       |

* Query Parameters:

| **Key**            | **Value** | **Description**  |
| ------------------ | --------- | ---------------- |
| `lang`             |           | Language to Show |
| `priority_country` |           |                  |

* Response Example
  * Success:

```
{
"success": true ,
"code": "OK",
"message": "Success",
"data": {
    "webLoginUrl": "https://web-login.human-id.org/login?t=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwdXJwb3NlIjoid2ViLWxvZ2luL3JlcXVlc3QtbG9naW4tb3RwIiwic2lnbmF0dXJlIjoiODNiMDMxNjMwMTkzMjE5ZjMzNWM2MGI0OGU2MGQ5MzVlZWQ5ZDkzNDNlYjRiZmFjYzRlOTFmMTUxOTVhMDVlNyIsImlhdCI6MTU5OTI3MTczNSwiZXhwIjoxNTk5MjcyMDM1LCJzdWIiOiJTRVJWRVJfR1hJVFM3TlZZM0RETVozNVdVSDdDWCIsImp0aSI6InR1SWdOdU1LMjBseGI3a2pGeG9DUFNMeUx2UE8yNkJuWmtmMHc1WjZvTG9PcTlhZkRMblJGSHh0VHVGZllRSGoifQ.CVUA8DYOAk0nbu0_ftTFNMwtfCJ32hCqY_6MKP43Sg8&a=IO5T8PZH2O15N8SV&lang=en"
    }
}
```

* Error: Invalid Server Credentials

```
{ "success": false, "code": "401", "message": "Unauthorized" }
```

### API Exchange Token

* Endpoint URL

```
POST https://core.human-id.org/v0.0.3/server/users/exchange
```

* Request
  * Headers:

| **Key**         | **Value**                |
| --------------- | ------------------------ |
| `client-id`     | `<SERVER_CLIENT_ID>`     |
| `client-secret` | `<SERVER_CLIENT_SECRET>` |
| `Content-Type`  | `application/json`       |

* Body:

```
{
"exchangeToken": "0BYLCicta3dO5DrTkrfQxo7Z4hxmyAh5OwuVPEGS5SlnBGwY+A/t7BNKzGcZFGqGOnI97nGQJ6SGoMf8vyux+D3AYmk63CR9AUnO7f+zlTL4MX9t2OhBdMZoLNP21ucvnTjiR5EIO7qwnFRVN4VquMCUMV8Kmt7N1s6V3yXHmDM="
}
```

* Response Example
  * Success:

```
{
    "success": true,
    "code": "OK",
    "message": "Success",
    "data": {
        "userAppId": "<UNIQUE_USER_ID>",
        "countryCide": "ID"
    }
}
```

## Error Codes

See a full list of [error codes](https://github.com/human-internet/humanid-weblogin#error-codes) on our Github.


# Example Web SDK Integration

Django Implementation of HumanID SSO

## Developer Console&#x20;

Acquire CLIENT-ID, CLIENT-SECRET, and set-up redirect URLs on the App Details page by registering your app through <https://developers.human-id.org/home/>.

## WebLoginUrl API Call

Create a view function that will perform a POST API request and render HTML:

```python
#YOUR_APP/views.py
def homepage(request):
    headers = {'client-id':'CLIENT_ID','client-secret':'CLIENT_SECRET'}
    response=requests.post('https://core.human-id.org/v0.0.3/server/users/web-login',headers=headers)
    data=response.json()
    return render(request,'trial/homepage.html',
    {
        'data':data
    })
```

Create a HTML page:

```markup
<!YOUR_APP/templates/homepage.html>
{%block content%}
<div>
<p>{{data}}</p>
<p><a href={{data.data.webLoginUrl}}>{% include 'anonymous-login.svg.html'%}</a></p>
</div>
{%endblock%}
```

## Callback URL

After a user successfully logs in through humanID. The user will be redirected to the URL specified in the developer console on the App Details page.

Create a function that will take the exchange token in that URL and make another API request to acquire a unique User ID.

```python
#YOUR_APP/views.py
def callback(request):
    headers = {'client-id':'CLIENT_ID','client-secret':'CLIENT_SECRET'}
    token = request.GET.get('et')
    response= requests.post('https://core.human-id.org/v0.0.3/server/users/exchange',headers= headers,data={'exchangeToken':token})
    data=response.json()
    return render(request,'trial/callback.html',
    {
        'data':data
    })

```


# Golang SDK Integration Guide

## NOTE: not up-to-date. Please contact <contact@human-id.org> if you'd like us to build this.

## Overview

1. [Requirements](/go-lang-sdk-integration-guide#requirements)
2. [Steps](/go-lang-sdk-integration-guide#steps)
3. [Sample](/go-lang-sdk-integration-guide#sample)

## Requirements

* "encoding/json"
* "io"
* "net/http"
* "bytes"

## Steps

1. [Installation](/go-lang-sdk-integration-guide#1-installation)
2. Sample Codes using "net/http" library
   1. [main.go](/go-lang-sdk-integration-guide#main-go)
   2. [app.go](/go-lang-sdk-integration-guide#app-go)
   3. [handler.go](/go-lang-sdk-integration-guide#handler-go)
3. [Contributing](/go-lang-sdk-integration-guide#3-contributing)

### 1. Installation

```
go get github.com/human-internet/humanid-golang-sdk
```

For the latest version of the SDK:

```
go get -u github.com/human-internet/humanid-golang-sdk
```

### 2. Sample Codes using "net/http" library

#### **main.go**

```
package main

import (
	app "[PATH_TO_APP.GO]"
)

func main() {
	app := &app.App{}
	app.Initialize()

	app.Run(":[PORT_NUMBER]")
}
```

#### **app.go**

```
import (
	"net/http"
	"os"

	_handler "[PATH_TO_YOUR_HTTP_HANDLER]"

	"github.com/gorilla/handlers"
	mux "github.com/gorilla/mux"
	_humanID "github.com/human-internet/humanid-golang-sdk"
)

type App struct {
	Router  *mux.Router
}

func (app *App) Initialize() {
	app.Router = mux.NewRouter()

	humanID := _humanID.New(
    os.Getenv("SERVER_ID"),
    os.Getenv("SERVER_SECRET"),
  )

	_handler.NewHandler(app.Router, humanID)
}


func (app *App) Run(addr string) {
	headers := handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"})
	methods := handlers.AllowedHeaders([]string{"GET", "POST", "PUT", "DELETE"})
	origins := handlers.AllowedOrigins([]string{"*"})
}
```

#### **handler.go**

```
package http

import (
	"encoding/json"
	"net/http"
	"fmt"

	"github.com/gorilla/mux"
	_humanID "github.com/human-internet/humanid-golang-sdk"
)

type HTTPHandler struct {
	humanID _humanID.HumanID
}

func RespondJSON(w http.ResponseWriter, status int, payload interface{}) {
	response, err := json.Marshal(payload)
	if err != nil {
		w.WriteHeader(http.StatusInternalServerError)
		w.Write([]byte(err.Error()))
		return
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(status)
	w.Write([]byte(response))
}

func (handler HTTPHandler) Authenticate(w http.ResponseWriter, r *http.Request) {
	tokenArr, ok := r.URL.Query()["et"]
	if !ok {
		code, ok := r.URL.Query()["code"]
		if !ok {
			redirectSuccessURL := "[YOUR_FAIL_REDIRECT_URL]"
			http.Redirect(w, r, redirectSuccessURL, 301)
			return
		}
	}
	token := tokenArr[0]

	verifyTokenResp, err := handler.humanID.VerifyToken(token)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	if verifyTokenResp.Code == "OK" {
		redirectSuccessURL := "[YOUR_SUCCCESS_REDIRECT_URL]"
		http.Redirect(w, r, redirectSuccessURL, 301)
		return
	} else {
		redirectSuccessURL := "[YOUR_FAIL_REDIRECT_URL]"
		http.Redirect(w, r, redirectSuccessURL, 301)
		return
	}
}

func (handler HTTPHandler) RequestLoginURL(w http.ResponseWriter, r *http.Request) {
	loginResp, err := handler.humanID.Login("ID", "")
	if err != nil {
		payload := AuthenticateResponse{
			Success: false,
			Code: "500",
			Message: "Internal Server Error",
		}
		RespondJSON(w, http.StatusInternalServerError, payload)
		return
	}
	if loginResp.Code == "OK" {
		loginURL := loginResp.Data.WebLoginUrl
		http.Redirect(w, r, loginURL, 301)
		return
	}
	payload := AuthenticateResponse{
		Success: false,
		Code: "500",
		Message: "Internal Server Error",
	}
	RespondJSON(w, http.StatusInternalServerError, payload)
	return
}


func NewHandler(publicRouter *mux.Router, humanID _humanID.HumanID) {
	handler := &HTTPHandler{
		humanID: humanID,
	}

	publicRouter.HandleFunc("/authenticate", handler.Authenticate).Methods("GET")
	publicRouter.HandleFunc("/request", handler.RequestLoginURL).Methods("GET")
}
```

**Environment Variables**

These variables can be found in the Human ID Developer Console

```
SERVER_ID=[REPLACE_ME]
SERVER_SECRET=[REPLACE_ME]
CLIENT_ID=[REPLACE_ME]
CLIENT_SECRET=[REPLACE_ME]
```

### 3. Contributing

#### Run Tests

**Pre-requisites (only for testing):**

* docker
* docker-compose

**Run tests:**

```
docker-compose up
```

## **Sample**

See our Github for a full [sample](https://github.com/human-internet/humanid-golang-sdk/tree/master/demo) to learn more!


# React Native SDK Integration Guide

## IMPORTANT

The React Native SDK is currently being worked on and an updated version will be released shortly. We strongly recommend waiting until the updated version is completed before integration. Please email <developers@human-id.org> with any questions you may have.

## Overview

1. [Requirements](/react-sdk-integration-guide#requirements)
2. [Installations](/react-sdk-integration-guide#installations)
3. [Credentials Access](/react-sdk-integration-guide#credentials-access)
4. [Configuration](/react-sdk-integration-guide#configuration)
5. [How To Use](/react-sdk-integration-guide#how-to-use)
6. [Sample Code](/react-sdk-integration-guide#sample-code-here)

## Requirements

* React 16.8.2+
* React Native 0.55.0+
* react-native-device-info 7.3.1+

## Steps

1. [Installations](/react-sdk-integration-guide#1-installations)
2. [Credentials Access](/react-sdk-integration-guide#2-credentials-access)
3. [Configuration](/react-sdk-integration-guide#3-configuration)

### 1. Installations

#### Yarn

```
yarn add @human-id/react-native-humanid react-native-device-info  
```

#### npm

```bash
npm i @human-id/react-native-humanid react-native-device-info  
```

#### **linking assets (IMPORTANT)**

```bash
npx react-native link
```

### **2. Credentials Access**

Receive the appId and appSecret through the [App Registration Form](https://developers.human-id.org/home/).

### 3. Configuration

at your index.js file

```
import {configureHumanID} from "@human-id/react-native-humanid";  
import AppLogo from "path/your-app-logo";
  
configureHumanID({  
    appName: "Your application NAme",
    clientSecret: "APP_SECRET",
    clientId: "APP_ID",
    Icon: AppLogo // Icon is JSX.Element
});
  
AppRegistry.registerComponent(appName, () => App);  
```

## How To Use

#### **Register humanID Provider at your Top Container Application**

```
import {HumanIDProvider} from "@human-id/react-native-humanid";
  
const App = () => {
    return (
        <View>
            <HumanIDProvider />
        </View>
    );
};
  
export default App; 
```

#### **Login**

```
import {logIn} from "@human-id/react-native-humanid";
  
const HomeScreen = () => {  
    const handleLogin = () => {
        logIn();
    };
    
    return <Button title="Login" onPress={handleLogin} />;
}  
  
export default HomeScreen;  
```

#### **Listener onSuccess, onError, onCancel**

We suggest put this method into lifecycle that only live once on your screen, example: **componentDidMount** if you use class component, otherwise you can use **useEffect**

```
import {onCancel, onSuccess, onError} from "@human-id/react-native-humanid";  
  
const HomeScreen = () => {  
    React.useEffect(() => {
        const unsubscribeSuccess = () => onSuccess((exchangeToken) => {
          console.log("exchangeToken", exchangeToken)
        });
    
        const unsubscribeError = () => onError(() => {
          console.log("error")
        });
    
        const unsubscribeCancel = () => onCancel(() => {
          console.log("canceled")
        });
    
        unsubscribeSuccess();
        unsubscribeError();
        unsubscribeCancel();
    
        return () => {
          unsubscribeSuccess();
          unsubscribeError();
          unsubscribeCancel();
        }
    }, []);
}  
 
export default HomeScreen;
```

## Sample Code [Here](https://github.com/human-internet/humanid-reactnative-sdk/tree/example)

####


# Flutter SDK Integration Guide

## IMPORTANT

The Flutter SDK is currently being worked on and an updated version will be released shortly. We strongly recommend waiting until the updated version is completed before integration. Please email <developers@human-id.org> with any questions you may have.

## Overview

1. [Requirements](/flutter-sdk-integration-guide#requirements)
2. [Installation](/flutter-sdk-integration-guide#installation)
3. [Credentials Access](/flutter-sdk-integration-guide#credentials-access)
4. [How To Use/Configuration](/flutter-sdk-integration-guide#how-to-use-configuration)
5. [Sample Code](/flutter-sdk-integration-guide#sample-code-here)

## Requirements&#x20;

* Dart
* Flutter SDK

Please update to the latest stable SDK!

## Steps

1. [Installation](/flutter-sdk-integration-guide#1-installation)
2. [Credentials Access](/flutter-sdk-integration-guide#2-credentials-access)
3. [How To Use/Configuration](/flutter-sdk-integration-guide#3-how-to-use-configuration)

### 1. Installation

**pubspec.yaml**

```
dependencies:
  humanid_flutter_sdk: ^0.0.4
```

### 2. Credentials Access

Get the appId and appSecret through the [App Registration Form](https://developers.human-id.org/home/).

### 3. How To Use/Configuration

**Configure HumanId SDK inside a press function**

```
import 'package:humanid_flutter_sdk/ui/human_id_sdk.dart';
import 'package:humanid_flutter_sdk/utils/authorization_arguments.dart';
import 'package:humanid_flutter_sdk/utils/routes.dart';
  
configureHumanIdSDK(
                context: context,
                arguments: AuthorizationArguments(
                  appName: 'YOUR_APP_NAME',
                  iconUrl: 'YOUR_APP_ICON',
                  clientId: 'YOUR_CLIENT_ID',
                  clientSecret: 'YOUR_CLIENT_SECRET',
                ),
                onSuccessLogin: (accessToken) {
                  setState(() {
                    token = accessToken;
                  });
                }), 
```

## Sample Code [Here](https://github.com/human-internet/humanid-fluttersdk/tree/master/example)


# WordPress Plugin Integration Guide

humanID's Plugin is two products in one: A protection for your site's contact form, and a bot- & spam-protection for your blog's comment and discussion forum.

humanID’s WordPress Plugin allows users to permanently block users and bots from commenting on their WordPress-based website, or from sending you contact requests through your contact form (requires 'Contact Form 7'). Safe your time from having to go through emails and comments manually, and safe your users' time from having to solve ineffective CAPTCHAs.

## **Overview**

1. [Requirements](#_m5phaycvxyjt)
2. [Create your humanID Developer Account](#_534tbnfh1936)
3. [Plugin Setup in WordPress](#_h0dl1vv45boj)
4. [Developer Console Setup](#_8ytpmmjnrqt1)
5. [Success/Failure Links](#_3ts4raj2bk0z)

## **Requirements** <a href="#m5phaycvxyjt" id="m5phaycvxyjt"></a>

* A [humanID Developers account](https://developers.human-id.org/login/register/) (humanID is free up to several hundred monthly requests).
* humanID Server Credentials. Server Credentials consist of
  * Server Client ID
  * Server Client Secret.
* A website utilizing WordPress. You must be site admin or site creator.

### **Create your humanID Developer Account** <a href="#id-534tbnfh1936" id="id-534tbnfh1936"></a>

* Go to <https://developers.human-id.org/login/register/>.
* Fill out the page with your information and click “Create Account”

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FSq9NKMUBamo5XDhgufSP%2F0?alt=media)

### **Plugin Setup in WordPress** <a href="#h0dl1vv45boj" id="h0dl1vv45boj"></a>

* In the WordPress dashboard, find “plugins” and click “add new”.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FHGF38zS0sFZt2QYcm0b5%2F1?alt=media)

* Search for “humanID”. Install and activate the plugin.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FgElDiJzlwGmOp4mGnUVi%2F2?alt=media)

* In WordPress, go to “humanID Setup”

#### <img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2F5L2KRzRvQUWWDJTpzYfO%2F3?alt=media" alt="" data-size="original"> <a href="#id-59kliavgkmnh" id="id-59kliavgkmnh"></a>

* In the “Update Permalinks” panel, click “Go to permalinks”.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FFPATeZTXg4gTcME9gt1T%2F4?alt=media)

* Set your “Common Settings” to anything other than type “Plain”. Do **NOT** set your common setting to be “Plain” and save changes.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2F5Z5Lml5GEBGhfLqsXSvW%2F5?alt=media)

* Back on the “humanID Setup” page, click “Yes, I have updated the permalinks”. This panel should appear.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FK3gNCCHZbAFgV3vTvLme%2F6?alt=media)

### **Developer Console Setup** <a href="#id-8ytpmmjnrqt1" id="id-8ytpmmjnrqt1"></a>

* Below the “humanID Redirect Urls” panel, right-click on “here” and click “Open link in new tab”. Click on the new tab to go to the “humanID Developers” page.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FtGKgi56yBZhzb6KzubV2%2F7?alt=media)

* Log into your humanID Developers account. If you don’t have one, create one and log in.
* In the “humanID Developers” dashboard, click “Register New Project”

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FMXe2wl8lBWFQi3DnqBCC%2F8?alt=media)

* Click “Create New Credentials”. Name your credentials, and set the type and environment (usually to 'Production' and 'Server'). Leave "Package ID" empty. After this step, you will receive server credentials on the dashboard.

  <figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FI38sDDHUTO3ZgJ88KdI1%2Fimage.png?alt=media&amp;token=3c8a412a-03b4-4636-8b4d-fd84cdc71ff6" alt=""><figcaption></figcaption></figure>
* Copy your Client ID and on the “humanID Setup” page paste it into the textbox labeled “Client ID”.
* Copy your Client secret and on the “humanID Setup” page paste it into the textbox labeled “Client Secret ”. Save changes.

![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FDobSvsBleODyBD54zTos%2F10?alt=media)

### **Success/Failure Links** <a href="#id-3ts4raj2bk0z" id="id-3ts4raj2bk0z"></a>

* In the “humanID Setup” page, find the redirect URLs you received after you updated your permalinks.
* Open the “humanID Developers” dashboard. Scroll down until you see the panel labeled “Redirect URLs”.
* Click the arrow on the right of “Edit Redirect URLs” to expand. Find “Successful URL” and “Failed URL”.
* Copy your success link from “humanID Setup” and paste it into their respective textbox on the “humanID developers” page.

&#x20;<img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2Fw11mh7xBckMJfpPWGv9R%2F11?alt=media" alt="" data-size="original">

* Repeat the step above with the failed link.
* Click “Update Project Redirect URLs”.

***

## humanID Contact Form Protection

If you're using the 'Contact Form 7' plugin, Wordpress' most popular Contact Form, you can upgrade it with humanID.&#x20;

1. After installing 'Contact Form 7', go to the Wordpress menu.<img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FJNAseRUXbSaSVGibF0x1%2Fimage.png?alt=media&amp;token=547dd3d1-b51d-4308-8b7e-e98ccd74ae78" alt="" data-size="line">
2. Click on 'Add New' on top to add a new Contact Form
3. Enter a title, and then click on 'humanID' ![](https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2Fc6LaA9s5fhq0prof5Mgo%2Fimage.png?alt=media\&token=e0c5e0fb-79d5-46ea-86fe-08a50ce91757)
4. A menu will pop up to create a tag that will look something like \[humanid humanid-123]. Move this tag to the end of the form template.
5. You have now successfully added humanID to your Contact Form. Follow 'Contact Form 7's' guidelines to implement the Contact Form at the desired page on your website

   <figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FlSAZQf3xKV8Zoti1PawX%2Fimage.png?alt=media&amp;token=7f8ac5a2-84fa-4a9f-bdc9-6d562391a397" alt=""><figcaption></figcaption></figure>

## humanID Comment Form Protection

humanID's Comment form allows your website to host real debates between real humans – and allows you to block spam and harassment. You can blacklist offenders effectively, all without undermining your users' privacy. humanID's awardwinning technology blocks bots without saving any personally identifiable information.

To do so, no further work is needed. humanID is automatically added to Wordpress' in-house comment solution. After adding the plugin, you can permanently block users, or whitelist users. By default, comments will wait for your approval unless a user has been previously whitelisted.

<figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2F82RnlyTjkKHkDAtRX2Nh%2Fimage.png?alt=media&amp;token=2d081e89-f8be-412a-bb01-1035c6eb034f" alt=""><figcaption></figcaption></figure>


# Discord Bot Integration Guide

The How-To Guide

Use this link to [**add the humanID Discord Bot to Your Server**](https://discord.com/api/oauth2/authorize?client_id=1133181278498336808\&permissions=8\&scope=applications.commands%20bot)

## **Discord Bot** <a href="#id-41jwgni3e6t2" id="id-41jwgni3e6t2"></a>

humanID’s Discord Bot offers a 100% anonymous option for Discord authentication. Protect your server from duplicate and fake accounts, data leaks/theft, and abusive users with a more secure method of authentication. humanID is a product of the nonprofit [Foundation for a Human Internet](https://docs.human-id.org/www.human-internet.org). We guarantees that our Discord authentication bot is anti-spam, anti-raid, and anti-bot with no other motive than to preserve online communities. We never harvest personal data. &#x20;

## :warning:**Requirement**:warning:  <a href="#tgiel4sof9kg" id="tgiel4sof9kg"></a>

**You should have administrative privileges on the Discord Server that's trying to integrate the Discord Bot** 🚨

## **Integration Steps (Takes 5-10 minutes )**

### **Option 1: Integrate automatically using the Discord bot (Recommended)**

1. [**Add the bot to your server**](#fajjxqi6e3if)
2. [**Register using the bot**](#register-with-humanid-using-the-discord-bot)
3. (Optional) [**Configure the Verified Role**](#configure-the-verified-role)

### **Option 2: Integrate using the humanID Developer Console**

1. **The bot integration process can be done through either the** [**Discord desktop application**](https://discord.com/download) **or the web application** 💻
2. [**Finish the Setup in the humanID Developer Console & add your URLs.**](#finishing-the-setup-in-the-humanid-developers-console)
3. [**Add the Bot to Your Discord Server**](#fajjxqi6e3if)
4. [**Configuring the Verified Role**](#configure-the-verified-role)

### **2a. Find Your Discord Server's ID**

* Why:
  * This record helps us identify the server that you manage, so we can provide authentication services accordingly.&#x20;

1. In a signed-in Discord server, click on the gear icon&#x20;

   <div align="right"><figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FV97Wcp2dJTsaGjynZ3bS%2FScreenshot%202023-08-30%20at%201.08.43%20PM.png?alt=media&amp;token=981a9877-884d-411f-b5ee-e7411e0fa807" alt=""><figcaption></figcaption></figure></div>
2. Scroll down to the **Advanced** section then turn on **Developer Mode**

   <figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FSHzrRP5K8VXA1rmYH8Ym%2FScreenshot%202023-08-30%20at%201.16.04%20PM.png?alt=media&amp;token=2077634a-5bf0-471c-a5df-a092b88f47eb" alt=""><figcaption></figcaption></figure>
3. Come back to the server's main page. Above the text channel list, **right-click** on the server's name and select **Copy ID**

<div align="center" data-full-width="true"><figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2Fh6NHcuzLErbyCMdKBGvn%2Fserver_id.gif?alt=media&amp;token=bc6463ab-f565-4c16-a13c-052a74873004" alt=""><figcaption></figcaption></figure></div>

### 2b. Register with humanID and find your Credentials&#x20;

* Why:
  * Allows us to connect your server to humanID, so we are able to verify (or block) individual users for your Discord Server.&#x20;
  * Verifies that you registered your server with our [core authentication service](https://docs.human-id.org/web-sdk-integration-guide#api-documentation), so your bot can interface with the core humanID service.

#### **Find humanID Client ID and humanID Client Secret in the** humanID Developer Console&#x20;

1. Register via the [humanID Developer Console](https://developers.human-id.org/home/)
2. Create a new project
   1. THIS IS IMPORTANT - choose the project name as it will appear to your end users. We will ask your users to "Log into xyz" - what's xyz for you? For example, your Discord server's name could make sense.&#x20;

      <div align="left" data-full-width="false"><figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FRxAlMTfXzmg72U2fawLx%2Fimage.png?alt=media&amp;token=937d95ea-e442-4b06-8e1a-06a877b0eeec" alt=""><figcaption></figcaption></figure></div>
3. Click on **Create New Credentials**

   <figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FP15QabNti3y3AG2Zkw78%2FScreenshot%202023-08-30%20at%209.13.12%20PM.png?alt=media&amp;token=48ba6c1b-f090-4181-9271-f8ebd911ad0a" alt=""><figcaption></figcaption></figure>
4. In this step, enter any 'Credential Name' you like, and choose '**Production**' and '**Server**'. &#x20;

Make sure paste your Server ID from Discord into the "Server ID" text field.

<figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2Fl9xzsnXL2AHqcVrLdMYe%2FScreenshot%202024-04-15%20at%2012.03.55%E2%80%AFPM.png?alt=media&amp;token=52ea9503-07d1-44be-9420-fea683221464" alt=""><figcaption></figcaption></figure>

### Finishing the Setup in the humanID Developers Console

After creating the credentials, click on **Edit Redirect URLs o**n the bottom-right side of the project page:&#x20;

<figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FtOdLgpyGCH7sdEXFKuMv%2FScreenshot%202023-08-30%20at%209.14.29%20PM.png?alt=media&amp;token=0f2b37ed-d45b-407f-86fe-057cd84ee974" alt=""><figcaption></figcaption></figure>

* For 'Successful URL', paste in the following: <mark style="color:blue;">**`https://verify.discord.human-id.org/verification_successful`**</mark>
* For 'Failed URL', paste in:<mark style="color:blue;">**`https://verify.discord.human-id.org/verification_failed`**</mark>
* Don't forget to save the update.

### Adding the bot to your server <a href="#fajjxqi6e3if" id="fajjxqi6e3if"></a>

1. **If you are not the owner of the server, you can ask the owner to do so, and grant you** [**administrator privileges**](https://www.youtube.com/watch?v=4BR5CEwZ0xw\&t=40s)**.**&#x20;
2. **Click this link:** [**“Add the humanID Discord Bot to Your Server”**](https://discord.com/api/oauth2/authorize?client_id=1133181278498336808\&permissions=8\&scope=applications.commands%20bot) **. This** [**button** ](https://discord.com/api/oauth2/authorize?client_id=1133181278498336808\&permissions=8\&scope=applications.commands%20bot)**will take you to the Discord website. Please ensure that you are logged into the correct Discord account.**
3.

```
<figure><img src="/files/9EPh1qkVOisI2TfQajo2" alt="" width="375"><figcaption></figcaption></figure>
```

4. **Under the "Add to Server:" section, choose the Discord server that you wish the humanID Discord Bot to live in.**
5. **When asked to confirm granting the humanID Discord Bot Administrator access, confirm and click on Continue.**
6. **Finish any final authorization step to add the bot.**

#### :tada:**Congratulations - you're ready to build a community of humans, without compromising your users' privacy or having to handle private data yourself!**

### Adjust the configuration of the verified Role

#### After adding the humanID Verification Bot to your server, the bot will create a "humanID-verified" role that users can take on. We want to give you the autonomy to configure that role to give your server members access that you feel comfortable with.

### Default Permissions of the humanID-verified Role

By default, the bot will give the following permissions to the humanID-verified Role:

* View Channels
* Change Nickname
* Send Messages
* Send Messages in Threads
* Create Public Threads
* Embed Links
* Attach Files
* Add Reactions
* Use External Emoji
* Read Message History
* Use Application Commands

**Grant access to private channels**

* [ ] By default, unverified users can only view public channels in the servers. You can assign "humanID-verified" role to any private channel.&#x20;

**Manually change permissions of verified users**

* [ ] Head over to the Server Settings panel&#x20;
* [ ] &#x20;<img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FoRfCZfAiEDssiCjc3Rf8%2Fsettings.gif?alt=media&amp;token=b1a2811b-c40f-4f6b-bbd4-47d7ac21ef02" alt="" data-size="original">
* [ ] Make sure that the "humanID-verified" role is adjusted to sit underneath the ***humanID Verification*** role (different from the previous "verified" role)
*

 <figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2Fh1LjCUdx0DCzhj2JrHok%2Fswitch%20place.gif?alt=media&amp;token=019b9699-9064-4127-b094-d9e3ade56d1a" alt=""><figcaption></figcaption></figure>

* [ ] Click on the "humanID-verified" role to toggle on capabilities that you'd like to give members
*

 <figure><img src="https://2726894056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbbSWPPdzqwBMlWppLN%2Fuploads%2FLZGvWgj8TbYQzrPvLflG%2Fpermissions.gif?alt=media&amp;token=0ba94eef-9207-46ca-81f5-4e3f77d12ba6" alt=""><figcaption></figcaption></figure>

* [ ] Permission changes are saved automatically. Congratulations, you've successfully set up the humanID Verification bot! Enjoy😊

## Register with humanID using the Discord Bot

Once you have added the bot to your server with the correct permissions please follow these steps (if you are indeed the server administrator):

1. Navigate to the #get-verified channel (should have been made for you by the bot when you installed)
2. Use the /register command followed by your email address
3. The bot will respond by sending your email an activation link so we can verify the email address
4. After clicking the link you will be redirected back to discord and your server will be ready to use the /verify command!


# FAQ

## How do I report a bug/issue?

If you find a bug or error with humanID apps, please submit an issue in each repository affected under the [issues](https://github.com/human-internet/humanid-ios-sdk/issues) tab. Be as descriptive as possible: include exactly what you did to make the bug appear, what you expected to happen, and what happened instead. Please include screenshots of errors and use labels to declare the type and urgency of the issue. Remember to check for similar issues already reported.\
\
If you think you've found a security issue, you can responsibly disclose it to us by email: cs\@humanid-org.

## How do I implement a new feature or submit a corrected code?

Please visit our [Contributing](https://github.com/human-internet) page for information about implementing new features or submitting code patches.

## How do I register an application?

If it is your first application, click on the "New App" tab in the menu to add an application. If you have registered an application before, on the [Application Dashboard](https://developers.human-id.org/home/) you will find the "Register New App" button. Click on that button and enter in the details of your application to register it. Once you submit the form your app will appear on the dashboard with the proper credentials to continue with integration.


# Support

If you need technical support, please submit issues [here](https://developers.human-id.org/docs/support/).


# Once you hit scale - Fees

How We Calculate Fees for the humanID Authentication Service

* We're offering humanID for free to integrate into small platforms. But we do incur cost to provide the service, and are a nonprofit with a small budget.&#x20;

  For services that grow big enough (Yay🎉!) to incur significant cost on our end, we will have to ensure that the cost of delivering the service at scale will not bankrupt us, while still offering the service without generating profit, and as cheap as possible.&#x20;

  For full transparency, we charge our larger clients the fees as outlined below:

  * Capitalized terms not defined below have the meanings set forth in the Service Agreement for the humanID Authentication Service.
  * For each End User who attempts to register on a platform of Customer using the Service, Customer agrees to pay to FHI an amount equal to (a) the cost of SMS actually incurred by FHI (the “SMS Cost”, see below) plus (b) US$0.01 (collectively, the “End User Fee”), which amount FHI will invoice in period periods.
  * Until further steps are taken to enable Customers to limit their monthly spent, FHI will guarantee that for any Customers, the monthly cost will not exceed $20. We cannot guarantee that this provision will be offered to future Customers, based on location and expected volume.

  We're currently using Vonage to send SMS in all countries.&#x20;

  After the use any initial free trials or monthly allowances, we are charging customers the cost of sending SMS via Vonage, plus an additional $0.01 for each SMS.

  These charges are incurrent no matter if the SMS was successfully received, or has lead to a successful verification, as this is out of our control, as long as the SMS was requested via the client's implementation of humanID within their website, app, or other environment under the client's control (such as a Discord server).

  SMS cost can vary significantly based on the country code of the requesting phone number.

  For the current cost per SMS per country (before the addition of one additional cent), please see <https://www.vonage.com/communications-apis/sms/pricing/>

  &#x20;


# Adjust language & default country code

Here is how to automatically show humanID in your user's language, and with a specific country code pre-selected

humanID is available in 26 languages (and if your language is not supported, please submit a push request with translations via our github). The 'country code' preselected can also be adjusted, and if your users come from a handful of countries, those can be shown on top of the list.

To adjust the language and 'priority countries' of the user frontend, humanID integration partners can set URL parameters. Users can also manually change the language from a dropdown.

Here is how:

## Setting URL Parameters

### How to select SMS message language

Change the OTP\_REQUEST\_MESSAGE variable of the localization function, and choose one of the variables listed on our [GitHub](https://github.com/human-internet/humanid-core/blob/master/server/localization.js).

### Web SDK

| Key               | Values                                                                                                                                                                  | Description                                                                                                                 |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| lang              | Use ISO 639-1 language codes, which are available on our [GitHub](https://github.com/human-internet/humanid-weblogin/tree/master/language).                             | Language shown                                                                                                              |
| priority\_country | Use ISO 3166 country codes, which can be seen on our [GitHub](https://github.com/human-internet/humanid-core/blob/develop/src/validator/country-validator/iso-3166.js). | <p>Highest priority country codes.</p><p>This can also be set in the Developer Console with the Limit Country function.</p> |

<br>

### Mobile SDKs

#### Android SDK

&#x20;  .setDefaultLanguage(SupportedLanguage.FRENCH)

<br>

#### iOS

language: SupportedLanguage.ENGLISH\_US

<br>


# SMS Terms and Conditions

SMS Terms and Conditions

**SMS Terms and Conditions**

Please read these terms and conditions carefully before using humanID's SMS verification.

1. **Acceptance of Terms**: By using humanID, you consent to these terms and conditions.
2. **Privacy**: Your privacy is the reason we exist. We only use your phone number to send a verification code for authentication purposes. Once verification is complete, your phone number is deleted from our servers. Your phone number – or any other personally identifying information – is never communicated to the platform or app you're logging into.&#x20;
3. **Message Frequency**: The number of SMS messages you receive will depend on the number of sign-in attempts associated with your account. We will never send any other messages, and we couldn't if we wanted due to the fact that we don't save your number.
4. **Costs**: Our service does not charge end users for SMS messages, but standard message and data rates may apply according to your service plan provided by your mobile carrier.
5. **Opt-Out**: An opt-out is not necessary, since your number will automatically deleted in either scenario. Nevertheless,  you can opt out of receiving SMS messages at any time by following the instructions provided in our messages.&#x20;
6. **Warranties**: We do not guarantee the delivery or the accuracy of the content of any SMS message as this is subject to the performance of your mobile carrier or the device capabilities.
7. **Limitation of Liability**: We are not liable for any delays, delivery failures, or other damage resulting from such problems.


# Privacy-Policy

Privacy policy of the humanID login

**Privacy Policy**

At the Foundation for a Human Internet, we are committed to maintaining the trust and confidence of our users. In this policy, we provide information on how we treat data that we collect from users of our humanID single sign-on product.

1. **Information Collected**: To facilitate your access to third-party services, we collect your mobile phone number solely for the purpose of sending a one-time verification code.
2. **Use of Information**: The mobile phone number is used once for sending the OTP and is then promptly deleted from our servers. It is not used for any other purpose or ever communicated to the third-party platform you're verifying for.
3. **Data Storage and Protection**: We implement best-in-class security measures to maintain the safety of your personal information when you enter, submit, or access your personal information.
4. **Sharing of Information**:
   * **No mobile information will be shared with third parties/affiliates for marketing/promotional purposes. All the above categories exclude text messaging originator opt-in data and consent; this information will not be shared with any third parties.**
   * We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our website, conducting our business, or servicing you, so long as those parties agree to keep this information confidential.
5. **Third Party Links**: Our websites and services offered on our websites (e.g. our newsletter), as well as any third party sites and services linked or used in connection to our websites have separate and independent privacy policies to this verification service.
6. **Changes to our Privacy Policy**: If we decide to change our privacy policy, we will post those changes on this page.

By using our services, you agree to the terms of this Privacy Policy.

Last updated: April 15, 2024


