← Kaikki laajennukset

Natiivilaajennus

KlugAuth

com.klug.auth.KlugAuth

APM EI OLE TARPEEN. Lataa ja nauti. Yksinkertaisempaa ei voi olla.

Sign in with Apple ja Sign in with Google ActionScriptistä, järjestelmän omilla kirjautumisnäkymillä. Sovelluksesi saa varmennetun identiteettitunnisteen palvelimellesi, joten käyttäjät luovat tilin keksimättä salasanaa.

iOSAndroidmacOSiPad Macilla Tuotantokäytössä Alkaen €19 / vuosi · Osta

Yleiskatsaus

Useimmat käyttäjät luovuttavat rekisteröitymislomakkeella: käyttäjätunnus, muistettava salasana, sähköpostikoodi, joka päätyy roskapostiin. KlugAuthin kanssa he napauttavat Jatka Applella tai Jatka Googlella, ja homma on valmis.

KlugAuth näyttää kunkin alustan natiivin kirjautumisen: Applen näkymä Face ID / Touch ID -tunnistuksella iOS:llä ja macOS:llä, Androidin tilinäkymä (Credential Manager) Googlea varten sekä järjestelmän kirjautumisikkuna Googlea varten iOS:llä ja macOS:llä. Se palauttaa palveluntarjoajan identiteettitunnisteen yhdessä noncen kanssa, valmiina varmennettavaksi palvelimellasi, sekä Applen valtuutuskoodin, jota tarvitset yhteyden peruuttamiseen tilin poistamisen yhteydessä (App Store -ohje 5.1.1(v)).

Google SDK:ta ei ole mukana: Googlen kirjautuminen iOS:llä ja macOS:llä käyttää tavallista OAuth-kulkua PKCE:llä järjestelmän selainnäkymässä, joten laajennus pysyy pienenä.

KlugAuth on käytössä sovellustemme nykyisessä julkaisussa, todisteenamme toimivuudesta, rekisteröitymisessä, kirjautumisessa ja laitteen uloskirjautumisen vahvistamisessa Apple- tai Google-tilillä.

Ominaisuudet

  • Itsenäinen: yksi ANE, ei ydinkirjastoa tai riippuvaisia ANE-laajennuksia lisättäväksi
  • Sign in with Apple iOS 13+:lla, macOS 10.15+:lla ja iPad-sovelluksissa Apple silicon -Maceilla
  • Sign in with Google Androidilla (Credential Manager) sekä iOS:llä / macOS:llä (järjestelmän kirjautumisikkuna, ei Google SDK:ta)
  • Identiteettitunniste, käyttäjätunnus, sähköposti ja nimi; Applen valtuutuskoodi uusimista ja peruuttamista varten
  • Nonce-apufunktio toistohyökkäysten estoon (Apple välittää sen SHA-256-tiivisteen, Google raaka-arvon)
  • Applen tunnistetietojen tilan tarkistus (valtuutettu / peruutettu) palaaville käyttäjille
  • Erilliset onnistumis-, peruutus- ja virhetapahtumat; peruutus raportoidaan, mutta se ei ole koskaan virhe

Tuetut alustat

iOS Apple + Google · arm64
Android Google · Credential Manager
macOS Apple + Google · arm64 · x86_64
iPad Macilla Apple + Google

Sign in with Apple Androidilla on mahdollista Applen verkkokulun ja pienen palvelinsivun avulla; voimme toimittaa sen osana projektia. isSupported (Apple) ja isGoogleSupported kertovat koodillesi, mitä laite tarjoaa.

Aloitus

Lisää laajennus sovelluksesi descriptoriin:

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

Sign in with Applea varten lisää entitlement (iOS: Entitlements descriptorissa; macOS: allekirjoituksen yhteydessä):

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

Googlea varten luo OAuth-asiakkaat Google Cloud -konsolissa: verkkoasiakas (sen tunnus on tunnisteen audience Androidilla), Android-asiakas pakettinimelläsi ja SHA-1:llä sekä iOS-asiakas iOS:ää ja macOS:ää varten.

Koodiesimerkit

Viisi täydellistä esimerkkiä, painikkeista palvelimellesi asti. Jokainen kutsu palaa heti; tulokset saapuvat KlugAuthEvent-tapahtumina. Koko dokumentaatio →

1 · Tarjoa se, mitä laite tukee
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 · Sign in with 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 · Sign in with 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 · Peruutus ja virheet
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 · Tarkista palaava Apple-käyttäjä
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

Rajapintayleiskatsaus

KlugAuth.getInstance()Palauttaa yksittäisen instanssin.
isSupportedTrue siellä, missä Sign in with Apple on saatavilla (iOS, macOS).
isGoogleSupportedTrue siellä, missä Sign in with Google on saatavilla (Android, iOS, macOS).
generateNonce()Staattinen. Uusi satunnainen nonce (32 tavua heksana); käytä sitä kerran ja lähetä sama arvo palvelimellesi.
signInWithApple(nonce)Avaa Applen kirjautumisnäkymän. Palauttaa false, jos käynnistys ei onnistunut (ei tuettu tai kirjautuminen on jo käynnissä).
signInWithGoogle(clientId, nonce)Avaa Googlen kirjautumisen. Android: verkkoasiakkaan tunnus; iOS / macOS: iOS-asiakkaan tunnus. Palauttaa false, jos käynnistys ei onnistunut.
getCredentialState(userID)Kysyy Applelta, onko käyttäjä yhä valtuutettu; vastaus saapuu tapahtumana APPLE_CREDENTIAL_STATE. iOS ja macOS.
KlugAuthEventidentityToken, authorizationCode, userID, email, givenName, familyName, fullName, state, errorCode, errorMessage.

Tapahtumat

APPLE_SUCCESSidentityToken, authorizationCode, userID; email ja nimet vain ensimmäisen valtuutuksen yhteydessä.
APPLE_CANCELEDKäyttäjä sulki näkymän.
APPLE_ERRORerrorCode ja errorMessage järjestelmältä.
APPLE_CREDENTIAL_STATEuserID ja state: authorized · revoked · notFound · transferred · unknown
GOOGLE_SUCCESSidentityToken, userID (tilin sähköposti), email, givenName, familyName.
GOOGLE_CANCELEDKäyttäjä sulki näkymän.
GOOGLE_ERRORerrorCode ja errorMessage; Androidilla NO_ACCOUNT, kun laitteessa ei ole Google-tiliä.

Osta KlugAuth

Vuosilisenssi yhdelle AIR-sovellukselle, kaikki päivitykset 12 kuukauden ajan. Maksun jälkeen saat laajennuksen, ActionScript-kirjaston ja dokumentaation sähköpostitse, yleensä yhden arkipäivän kuluessa. Lisenssi ja ehdot

Perus
€19 / vuosi
  • Lisenssi yhdelle AIR-sovellukselle
  • Kaikki päivitykset 12 kuukauden ajan
  • Ei tukea
Osta Perus
Vakio
€149 / vuosi
  • Lisenssi yhdelle AIR-sovellukselle
  • Kaikki päivitykset 12 kuukauden ajan
  • Vastaus sähköpostitse 7 päivän kuluessa
Osta Vakio
Prioriteetti
€299 / vuosi
  • Lisenssi yhdelle AIR-sovellukselle
  • Kaikki päivitykset 12 kuukauden ajan
  • Vastaus sähköpostitse 48 tunnin kuluessa
Osta Prioriteetti
Link (Stripe) laskee verot kassalla. Syötät AIR-sovelluksesi sovellustunnuksen kassalla.

Vaatimukset

AIR SDK51.x (HARMAN)
iOSiOS 13 tai uudempi
AndroidAndroid 6 tai uudempi, Google Play -palvelut
macOSmacOS 10.15 tai uudempi
AppleSign in with Apple -ominaisuus App ID:ssäsi
GoogleOAuth-asiakkaat Google Cloud -konsolissa