← Alle utvidelser

Native utvidelse

KlugAuth

com.klug.auth.KlugAuth

INGEN APM NØDVENDIG. Last ned og bruk. Det blir ikke enklere enn dette.

Logg inn med Apple og logg inn med Google fra ActionScript, med systemets egne innloggingsark. Appen din mottar et verifisert identitetstoken til serveren din, slik at brukere oppretter en konto uten å finne på et passord.

iOSAndroidmacOSiPad på Mac I produksjon Fra €19 / år · Kjøp

Oversikt

De fleste brukere gir opp ved registreringsskjemaet: et brukernavn, et passord de må huske, en e-postkode som havner i søppelposten. Med KlugAuth trykker de på Fortsett med Apple eller Fortsett med Google og er ferdige.

KlugAuth viser den native innloggingen på hver plattform: Apples ark med Face ID / Touch ID på iOS og macOS, Android-kontoarket (Credential Manager) for Google, og systemets innloggingsvindu for Google på iOS og macOS. Den returnerer leverandørens identitetstoken sammen med din nonce, klart for verifisering på serveren din, pluss Apples autorisasjonskode som du trenger for å tilbakekalle koblingen når en konto slettes (App Store-retningslinje 5.1.1(v)).

Ingen Google SDK er medfølgende: Google-innlogging på iOS og macOS bruker standard OAuth-flyt med PKCE i systemets nettleserark, slik at utvidelsen forblir liten.

KlugAuth kjører i den nåværende utgivelsen av appene våre, vårt proof of concept, for registrering, innlogging og bekreftelse av utlogging av en enhet med Apple eller Google.

Funksjoner

  • Selvstendig: én ANE, ingen kjernebibliotek eller avhengige ANE-er å legge til
  • Logg inn med Apple på iOS 13+, macOS 10.15+ og iPad-apper på Mac-er med Apple silicon
  • Logg inn med Google på Android (Credential Manager) og på iOS / macOS (systemets innloggingsvindu, ingen Google SDK)
  • Identitetstoken, bruker-ID, e-post og navn; Apples autorisasjonskode for fornyelse og tilbakekalling
  • Nonce-hjelper for beskyttelse mot replay (Apple bærer SHA-256 av den, Google den rå verdien)
  • Sjekk av Apples credential-status (authorized / revoked) for returnerende brukere
  • Egne hendelser for suksess, avbrudd og feil; avbrudd rapporteres, aldri som feil

Støttede plattformer

iOS Apple + Google · arm64
Android Google · Credential Manager
macOS Apple + Google · arm64 · x86_64
iPad på Mac Apple + Google

Logg inn med Apple på Android er mulig med Apples nettflyt og en liten serverside; vi kan levere det som en del av et prosjekt. isSupported (Apple) og isGoogleSupported forteller koden din hva enheten tilbyr.

Kom i gang

Legg utvidelsen til i applikasjonsbeskrivelsen din:

app.xml
<extensions>
    <extensionID>com.klug.auth.KlugAuth</extensionID>
</extensions>

For Logg inn med Apple legger du til entitlementet (iOS: Entitlements i descriptoren; macOS: ved signering):

app.xml · Entitlements
<key>com.apple.developer.applesignin</key>
<array><string>Default</string></array>

For Google oppretter du OAuth-klienter i Google Cloud-konsollen: en webklient (ID-en er token-audience på Android), en Android-klient med pakkenavnet og SHA-1 din, og en iOS-klient for iOS og macOS.

Kodeeksempler

Fem komplette flyter, fra knappene til serveren din. Hvert kall returnerer med en gang; resultatene kommer som KlugAuthEvents. Full dokumentasjon →

1 · Tilby det enheten støtter
SignIn.as
import com.klug.auth.KlugAuth;
import com.klug.auth.KlugAuthEvent;

var auth:KlugAuth = KlugAuth.getInstance();
var nonce:String = "";   // a fresh one for every attempt

appleButton.visible  = auth.isSupported;         // iOS 13+, macOS 10.15+, iPad apps on the Mac
googleButton.visible = auth.isGoogleSupported;   // Android, iOS 13+, macOS 10.15+

auth.addEventListener( KlugAuthEvent.APPLE_SUCCESS,   onAppleSuccess );
auth.addEventListener( KlugAuthEvent.APPLE_CANCELED,  onCanceled );
auth.addEventListener( KlugAuthEvent.APPLE_ERROR,     onError );
auth.addEventListener( KlugAuthEvent.GOOGLE_SUCCESS,  onGoogleSuccess );
auth.addEventListener( KlugAuthEvent.GOOGLE_CANCELED, onCanceled );
auth.addEventListener( KlugAuthEvent.GOOGLE_ERROR,    onError );
2 · Logg inn med Apple
Apple.as
function signInWithApple():void
{
    nonce = KlugAuth.generateNonce();          // 32 random bytes as hex, used once
    if ( !auth.signInWithApple( nonce ) )      // false: not supported, or a sheet is already open
        showMessage( "Sign in with Apple is not available." );   // your app function
}

function onAppleSuccess( e:KlugAuthEvent ):void
{
    // the token carries SHA-256 of the nonce: the server hashes the raw value and compares
    sendToServer( "apple", e.identityToken, nonce, e.fullName, e.authorizationCode );
    saveAppleUserID( e.userID );   // stable for this Apple ID; your app function
    // e.email and the names arrive only on the FIRST authorization;
    // the e-mail is always inside the identity token
}

// your app function: the server verifies the token and signs the user in
function sendToServer( provider:String, idToken:String, rawNonce:String,
                       name:String, appleCode:String = "" ):void
{
    var vars:URLVariables = new URLVariables();
    vars.provider = provider;
    vars.id_token = idToken;
    vars.nonce    = rawNonce;
    vars.name     = name;
    if ( appleCode != "" ) vars.code = appleCode;   // lets the server revoke the link later

    var req:URLRequest = new URLRequest( "https://your.server/auth" );
    req.method = URLRequestMethod.POST;
    req.data = vars;
    var loader:URLLoader = new URLLoader();
    loader.addEventListener( Event.COMPLETE, onServerAnswer );   // your app function
    loader.load( req );
}
3 · Logg inn med Google
Google.as
import flash.system.Capabilities;

// Android: the WEB client ID, which is the token audience on your server.
// iOS and macOS: the iOS client ID, used in the system sign-in window.
var googleClientId:String = Capabilities.manufacturer.indexOf( "Android" ) >= 0
    ? "YOUR_WEB_CLIENT_ID.apps.googleusercontent.com"
    : "YOUR_IOS_CLIENT_ID.apps.googleusercontent.com";

function signInWithGoogle():void
{
    nonce = KlugAuth.generateNonce();         // Google puts the raw value into the token
    if ( !auth.signInWithGoogle( googleClientId, nonce ) )   // false: no client ID, or already open
        showMessage( "Google sign-in could not start." );
}

function onGoogleSuccess( e:KlugAuthEvent ):void
{
    // e.userID is the account e-mail; names arrive every time
    sendToServer( "google", e.identityToken, nonce, e.fullName );
}
4 · Avbrudd og feil
Errors.as
function onCanceled( e:KlugAuthEvent ):void
{
    // the user closed the sheet: not an error, simply stay on the start screen
}

function onError( e:KlugAuthEvent ):void
{
    if ( e.type == KlugAuthEvent.GOOGLE_ERROR && e.errorCode == "NO_ACCOUNT" )
        showMessage( "Please add a Google account to this device first." );   // Android
    else
        showMessage( "Sign-in failed: " + e.errorMessage );   // e.errorCode for your log
}
5 · Sjekk en returnerende Apple-bruker
Startup.as
auth.addEventListener( KlugAuthEvent.APPLE_CREDENTIAL_STATE, function( e:KlugAuthEvent ):void {
    // e.state: authorized | revoked | notFound | transferred | unknown
    if ( e.state == "revoked" || e.state == "notFound" )
        signOut();   // your app function: the user removed the app from their Apple ID
});

var savedID:String = loadAppleUserID();   // stored after APPLE_SUCCESS; your app function
if ( auth.isSupported && savedID != "" )
    auth.getCredentialState( savedID );      // Apple only: iOS and macOS

API-oversikt

KlugAuth.getInstance()Returnerer den ene instansen.
isSupportedTrue der Logg inn med Apple er tilgjengelig (iOS, macOS).
isGoogleSupportedTrue der Logg inn med Google er tilgjengelig (Android, iOS, macOS).
generateNonce()Statisk. En ny tilfeldig nonce (32 byte som hex); bruk den én gang og send den samme verdien til serveren din.
signInWithApple(nonce)Åpner Apples innloggingsark. Returnerer false hvis det ikke kunne starte (støttes ikke, eller en innlogging pågår allerede).
signInWithGoogle(clientId, nonce)Åpner Google-innlogging. Android: webklient-ID-en; iOS / macOS: iOS-klient-ID-en. Returnerer false hvis det ikke kunne starte.
getCredentialState(userID)Spør Apple om brukeren fortsatt er autorisert; svaret kommer som APPLE_CREDENTIAL_STATE. iOS og macOS.
KlugAuthEventidentityToken, authorizationCode, userID, email, givenName, familyName, fullName, state, errorCode, errorMessage.

Hendelser

APPLE_SUCCESSidentityToken, authorizationCode, userID; email og navn bare ved første autorisasjon.
APPLE_CANCELEDBrukeren lukket arket.
APPLE_ERRORerrorCode og errorMessage fra systemet.
APPLE_CREDENTIAL_STATEuserID og state: authorized · revoked · notFound · transferred · unknown
GOOGLE_SUCCESSidentityToken, userID (kontoens e-postadresse), email, givenName, familyName.
GOOGLE_CANCELEDBrukeren lukket arket.
GOOGLE_ERRORerrorCode og errorMessage; på Android NO_ACCOUNT når enheten ikke har en Google-konto.

Kjøp KlugAuth

En årslisens for én AIR-applikasjon, med alle oppdateringer i 12 måneder. Etter betaling mottar du utvidelsen, ActionScript-biblioteket og dokumentasjonen på e-post, vanligvis innen én virkedag. Lisens og vilkår

Enkel
€19 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Ingen støtte
Kjøp Enkel
Standard
€149 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 7 dager
Kjøp Standard
Prioritet
€299 / år
  • Lisens for én AIR-applikasjon
  • Alle oppdateringer i 12 måneder
  • Svar på e-post innen 48 timer
Kjøp Prioritet
Skatter og avgifter beregnes ved kassen av Link (Stripe). Du oppgir applikasjons-ID-en til AIR-appen din under kassen.

Krav

AIR SDK51.x (HARMAN)
iOSiOS 13 eller nyere
AndroidAndroid 6 eller nyere, Google Play-tjenester
macOSmacOS 10.15 eller nyere
AppleSign in with Apple-capability på App ID-en din
GoogleOAuth-klienter i Google Cloud-konsollen