\u001B[1mSYNOPSIS\u001B[0m
    ${project.description}

    Original Maven URL:
        \u001B[33mmvn:${pkgGroupId}/${pkgArtifactId}/${pkgVersion}\u001B[0m

\u001B[1mDESCRIPTION\u001B[0m
    Welcome to the home of Scribe, the simple OAuth Java lib!

    * Why use Scribe?
    Dead Simple

    Who said OAuth was difficult? Configuring scribe is so easy your grandma can do it! check it out:

    OAuthService service = new ServiceBuilder()
    .provider(LinkedInApi.class)
    .apiKey(YOUR_API_KEY)
    .apiSecret(YOUR_API_SECRET)
    .build();

    That single line (added newlines for readability) is the only thing you need to configure scribe with LinkedIn’s OAuth API for example.

    * Threadsafe

    Hit Scribe as hard and with many threads as you like.

    * Supports all major 1.0a and 2.0 OAuth APIs out-of-the-box

        Google

        Facebook

        Yahoo

        LinkedIn

        Twitter

        Foursquare

        Evernote

        Vimeo

        Yammer

        Windows Live

        and many more! check the examples folder

    * Small and modular

    Scribe’s code is small (about 1k LOC) and simple to understand. No smart-ass or “clever” hacks here.
    Android-Ready

    * Works out of the box with android™ applications.

    * Stable & bulletproof

    Good test coverage to keep you safe from harm.

    When something bad actually happens, Scribe’s meaningful error messages will tell you exactly what went wrong, when and where.

\u001B[1mSEE ALSO\u001B[0m
    \u001B[36mhttps://github.com/fernandezpablo85/scribe-java\u001B[0m
