ameters

All standard parameters can be found as members of the `URI` instance. However a bitcoin URI may contain other non-standard parameters, all those can be found under the `extra` namespace.

See [the official BIP21 spec](https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki) for more information.

## Create URI

Another important use case for the `URI` class is creating a bitcoin URI for sharing a payment request. That can be accomplished by using a dictionary to create an instance of URI.

The code for creating an URI from an Object looks like this:

```javascript
var uriString = new URI({
  address: '12A1MyfXbW6RhdRAZEqofac5jCQQjwEPBu',
  amount : 10000, // in satoshis
  message: 'My payment request'
});
var uriString = uri.toString();
```


package org.edx.mobile.social.microsoft

import android.content.Context
import android.text.TextUtils
import okhttp3.Request
import org.edx.mobile.http.callback.ErrorHandlingOkCallback
import org.edx.mobile.http.provider.OkHttpClientProvider
import org.edx.mobile.social.SocialFactory
import org.edx.mobile.social.SocialLoginDelegate
import org.edx.mobile.social.SocialMember
import org.edx.mobile.social.SocialProvider
import roboguice.RoboGuice

class MicrosoftProvide : SocialProvider {

    override fun login(context: Context?, callback: SocialProvider.Callback<Void>?) {
        throw UnsupportedOperationException("Not implemented / Not supported")
    }

    override fun getUserInfo(context: Context?, socialType: SocialFactory.SOCIAL_SOURCE_TYPE?,
                             accessToken: String?,
                             userInfoCallback: SocialLoginDelegate.SocialUserInfoCallback?) {
        context?.run {
            val okHttpClientProvider = RoboGuice.getInjector(context).getInstance(OkHttpClientProvider::class.java)
            okHttpClientProvider.get().newCall(Request.Builder()
                    .url(MS_GRAPH_URL)
                    .get()
                    .build())
                    .enqueue(object : ErrorHandlingOkCallback<MicrosoftUser