Sample code for 30+ languages & platforms
DataFlex

Save Email Credentials in Apple Keychain or Windows Credentials Manager

See more Apple Keychain Examples

This example demonstrates how to save (or update) email credentials in the Apple Keychain.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSecrets
    Variant vJson
    Handle hoJson
    String sTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatSecrets)) To hoSecrets
    If (Not(IsComObjectCreated(hoSecrets))) Begin
        Send CreateComObject of hoSecrets
    End

    // On Windows, this is the Windows Credentials Manager
    // On MacOS/iOS, it is the Apple Keychain
    Set ComLocation Of hoSecrets To "local_manager"

    // Specify the name of the secret.
    // service and username are required.
    // appName and domain are optional.
    // Note: The values are arbitrary and can be anything you want.
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComUpdateString Of hoJson "appName" "MyEmailApp" To iSuccess
    Get ComUpdateString Of hoJson "service" "SMTP" To iSuccess
    Get ComUpdateString Of hoJson "domain" "example.com" To iSuccess
    Get ComUpdateString Of hoJson "username" "joe@example.com" To iSuccess

    // Create or update the secret.
    // This secret is the SMTP password for the above email account.
    Get pvComObject of hoJson to vJson
    Get ComUpdateSecretStr Of hoSecrets vJson "joes_password" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSecrets To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Let's save the IMAP secret for an account we'll read using IMAP..
    Get ComUpdateString Of hoJson "appName" "MyEmailApp" To iSuccess
    Get ComUpdateString Of hoJson "service" "IMAP" To iSuccess
    Get ComUpdateString Of hoJson "domain" "example2.com" To iSuccess
    Get ComUpdateString Of hoJson "username" "jane@example2.com" To iSuccess

    Get pvComObject of hoJson to vJson
    Get ComUpdateSecretStr Of hoSecrets vJson "janes_password" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSecrets To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Success."


End_Procedure