×

OAuthService.java

/**
 * Copyright (c) 2013 Nokia Corporation. All rights reserved.
 * Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation. 
 * Oracle and Java are trademarks or registered trademarks of Oracle and/or its
 * affiliates. Other product and company names mentioned herein may be trademarks
 * or trade names of their respective owners. 
 * See license text file delivered with this project for more information.
 */

package com.nokia.example.statusshout.engine;

import javax.microedition.content.Invocation;
import javax.microedition.content.Registry;
import javax.microedition.content.ResponseListener;
import javax.microedition.midlet.MIDlet;

/**
 * Common base class for service utilising OAuth authentication.
 */
public abstract class OAuthService implements ResponseListener {
    // Constants
    private static final String TAG = "OAuthService.";
    private static final String BROWSER_ID = "com.nokia.browser";

    // Members
    protected MIDlet midlet;
    protected ShareListener listener;

    /**
     * Constructor.
     * 
     * @param listener The listener for events.
     * @throws NullPointerException If the given MIDlet instance is null.
     */
    protected OAuthService(MIDlet midlet, ShareListener listener)
        throws NullPointerException
    {
        if (midlet == null) {
            throw new NullPointerException(TAG + "OAuthService(): MIDlet is null!");
        }
        
        this.midlet = midlet;
        this.listener = listener;
    }

    /**
     * Authenticates the user.
     */
    public abstract void authenticate();

    /**
     * Checks whether the given token is valid or not.
     * 
     * @param token The token to check.
     * @return True if the token is valid, false otherwise.
     */
    public abstract boolean isValid(final String token);

    /**
     * Adds the given service as a listener for the content handler. There can
     * be only one listener at a time so this needs to be called, if the service
     * needs to get callbacks to ResponseListener.invocationResponseNotify().
     *  
     * @param service An instance deriving from this class.
     */
    protected void setAsListener(OAuthService service) {
        Registry.getRegistry(midlet.getClass().getName()).setListener(service);
    }

    /**
     * Creates OAuth invocation.
     * 
     * @param loginUrl The URL to navigate to.
     * @param redirectUrl The URL where browser redirects after a successful
     * login.
     */
    protected void createInvocation(final String loginUrl, final String redirectUrl) {
        System.out.println(TAG + "createInvocation(): " + loginUrl + ", " + redirectUrl);
        
        Invocation invocation = new Invocation();
        invocation.setURL(loginUrl);
        invocation.setID(BROWSER_ID);
        invocation.setArgs(new String[] { "mode=proxy", "redirect_intercept=" + redirectUrl });
        invocation.setResponseRequired(true);
        
        try {
            Registry.getRegistry(midlet.getClass().getName()).invoke(invocation);
        }
        catch (Exception e) {
            System.out.println(TAG + "createInvocation(): " + e.toString());
            
            if (listener != null) {
                listener.onError(e.toString());
            }
        }
    }
}

Last updated 10 October 2013

Back to top

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×