I wrote my own oauth library based on one array for each service provider. this array contains all the data needed to authenticate and retrieve user data. the array I use for msdn (i.e. hotmail, outlook, xbox, msn):
$msdn = array ( 'oauth_version' => '2', 'oauth_method' => 'GET', 'redirect_user_params' => array ( 'url' => 'https://oauth.live.com/authorize', 'response_type' => 'code', 'http_params' => array ( 'url', 'client_id', 'redirect_uri', 'response_type', 'scope', 'state' ) ), 'obtain_access_token_params' => array ( 'url' => 'https://oauth.live.com/token', 'grant_type' => 'authorization_code', 'http_params' => array ( 'url', 'client_id', 'client_secret', 'code', 'grant_type', 'redirect_uri', 'scope' ) ), 'scope' => 'wl.signin wl.basic', 'obtain_user_data_params' => array ( 'url' => 'https://apis.live.net/v5.0/me', 'http_params' => array ( 'url', 'access_token', 'scope' ) ), 'client_id' => 'xxxxx',
The parameters for each of the three oauth steps (i.e., “redirect user”, “get access token” and “get user data”) are in the http_params arrays. in the case of msdn, these parameters fall into the query string of the url request that I send with curl (since msdn only accepts GET, not POST).
I have not tried to get the user's contacts address book, but that would just be an extension of the scope element with any additional information that you need (documented here http://msdn.microsoft.com/en-us/library/live/hh243646.aspx ) . as you can see from the http_params array, the scope parameter is used at each of the three oauth stages.