Skip to content
Sign-in with Apple Support for Codename One
HTML Java Objective-C Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CN1AppleSignIn
CN1AppleSignInDemo
bin
.gitignore
README.md

README.md

Sign-in with Apple Codename One Library

Sign-in with Apple Support for Codename One

Sign-in with Apple demo screenshot

Synopsis

This library adds support for Sign-in with Apple to Codename One apps. On iOS, this uses the native Authentication framework. On other platforms, it uses Apple's Oauth2 authentication.

License

GPL2+Classpath Exception

Getting Started

  1. Install the CN1AppleSignin cn1lib using Codename One preferences.
  2. Use the Apple Developer portal to configure your application to use Sign-in with Apple. See full setup instructions here
  3. Use the AppleLogin class (which is part of the CN1AppleSignin.cn1lib, as follows:
AppleLogin login = new AppleLogin();
// If using on non-iOS platforms, set Oauth2 settings here:
// login.setClientId(...);
// login.setKeyId(...);
// login.setTeamId(...);
// login.setRedirectURI(...);
// login.setPrivateKey(...);

if (login.isUserLoggedIn()) {
    new MainForm().show();
} else {
    new LoginForm().show();
}


....


class LoginForm extends Form {
    LoginForm() {
        super(BoxLayout.y());
        $(getContentPane()).setPaddingMillimeters(3f, 0, 0, 0);
        add(FlowLayout.encloseCenter(new Label(AppleLogin.createAppleLogo(0x0, 15f))));


        Button loginBtn = new Button("Sign in with Apple");
        AppleLogin.decorateLoginButton(loginBtn, 0x0, 0xffffff);

        loginBtn.addActionListener(evt->{
            login.doLogin(new LoginCallback() {
                @Override
                public void loginFailed(String errorMessage) {
                    System.out.println("Login failed");
                    ToastBar.showErrorMessage(errorMessage);
                }

                @Override
                public void loginSuccessful() {
                    new MainForm().show();
                }
            });
        });

        add(FlowLayout.encloseCenter(loginBtn));


    }
}


....

class MainForm extends Form {
    MainForm() {
        super(BoxLayout.y());
        add(new SpanLabel("You are now logged in as "+login.getEmail()));
        Button logout = new Button("Logout from Apple");
        logout.addActionListener(e->{
            login.doLogout();
            new LoginForm().show();
        });
        add(logout);
    }
}

For full working demo, see the Demo app

Supported Platforms

This library will work on all platforms. On iOS 13 and higher, it will use native authentication. On other platforms it will use Oauth2 authentication.

Credits

You can’t perform that action at this time.