mixi Developer Center (ミクシィ デベロッパーセンター)

mixiアプリ

mixiアプリ » 技術仕様(RESTful API方式) » スマートフォン » RESTful APIの利用 » RESTful API サンプルコード » Person & Friends API

Person & Friends API

ユーザのプロフィール情報を取得するサンプルです。

PHP

<?php
require_once('OAuth.php');

// Establish an OAuth consumer based on our admin 'credentials'
$CONSUMER_KEY = 'YOUR_CONSUMER_KEY';
$CONSUMER_SECRET = 'YOUR_CONSUMER_SECRET';
$consumer = new OAuthConsumer($CONSUMER_KEY, $CONSUMER_SECRET, NULL);

// Setup OAuth request based our previous credentials and query
$user= '00000000';
$base_feed = 'http://api.mixi-platform.com/os/0.8/people/@me/@self';
$params = array('xoauth_requestor_id' => $user);
$request = OAuthRequest::from_consumer_and_token($consumer, NULL, 'GET', $base_feed, $params);

// Sign the constructed OAuth request using HMAC-SHA1
$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $consumer, NULL);

// Make signed OAuth request to the Contacts API server
$url = $base_feed . '?' . implode_assoc('=', '&', $params);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip');

$auth_header = $request->to_header();
if ($auth_header) {
    curl_setopt($curl, CURLOPT_HTTPHEADER, array($auth_header));
}

$response = curl_exec($curl);
if (!$response) {
    $response = curl_error($curl);
}
curl_close($curl);

var_dump($response);

/**
 * Joins key:value pairs by inner_glue and each pair together by outer_glue
 * @param string $inner_glue The HTTP method (GET, POST, PUT, DELETE)
 * @param string $outer_glue Full URL of the resource to access
 * @param array $array Associative array of query parameters
 * @return string Urlencoded string of query parameters
 */
function implode_assoc($inner_glue, $outer_glue, $array) {
    $output = array();
    foreach($array as $key => $item) {
        $output[] = $key . $inner_glue . urlencode($item);
    }
    return implode($outer_glue, $output);
}
?>

※古いバージョンの OAuth.php には不具合が発見されています。
上記のサンプルプログラムがうまく動作しない場合は、最新版をダウンロードして試してみてください。

Python

#!/usr/bin/env python
import urllib, urllib2
import oauth

CONSUMER_KEY = 'YOUR_CONSUMER_KEY'
CONSUMER_SECRET = 'YOUR_CONSUMER_SECRET'
BASE_URL = 'http://api.mixi-platform.com/os/0.8'

# Setup 2 legged OAuth consumer based
consumer = oauth.OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET)

params = {'xoauth_requestor_id': 'xxxxxx'}

request = oauth.OAuthRequest.from_consumer_and_token(
              consumer,
              http_method='GET',
              http_url=BASE_URL + '/people/@me/@self',
              parameters=params,
          )
request.sign_request(oauth.OAuthSignatureMethod_HMAC_SHA1(), consumer, None)

# Query the user's personal info and print them
uri = '%s?%s' % (request.http_url, urllib.urlencode(params))
r = urllib2.Request(uri, headers=request.to_header())

try:
    print urllib2.urlopen(r).read()
except urllib2.HTTPError, e:
    print e

Perl

use 5.0.8;

use strict;
use warnings;

use Data::Dumper;
use JSON::XS;
use OAuth::Lite;
use OAuth::Lite::Consumer;

my %options = (
    site            => 'api.mixi-platform.com',
    consumer_key    => 'YOUR_CONSUMER_KEY',
    consumer_secret => 'YOUR_CONSUMER_SECRET',
    requester_id    => '00000000',
);

my $consumer = OAuth::Lite::Consumer->new(
    consumer_key    => $options{consumer_key},
    consumer_secret => $options{consumer_secret}
);

my $response = $consumer->request(
    method  => 'GET',
    url     => sprintf('http://%s/os/0.8/people/@me/@self', $options{site}),
    params  => {
        xoauth_requestor_id => $options{requester_id},
    });

if ($response->is_success) {
    print Dumper(JSON::XS::decode_json($response->decoded_content));
} else {
    warn $response->status_line;
}

このページの上部へ