Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
12694 anikendra 1
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2
/**
3
 * Mailru OAuth2 Provider
4
 *
5
 * @package    CodeIgniter/OAuth2
6
 * @category   Provider
7
 * @author     Lavr Lyndin
8
 */
9
 
10
class OAuth2_Provider_Mailru extends OAuth2_Provider
11
{
12
	public $method = 'POST';
13
 
14
	public function url_authorize()
15
	{
16
		return 'https://connect.mail.ru/oauth/authorize';
17
	}
18
 
19
	public function url_access_token()
20
	{
21
		return 'https://connect.mail.ru/oauth/token';
22
	}
23
 
24
	protected function sign_server_server(array $request_params, $secret_key)
25
	{
26
		ksort($request_params);
27
		$params = '';
28
		foreach ($request_params as $key => $value) {
29
			$params .= "$key=$value";
30
		}
31
		return md5($params . $secret_key);
32
	}
33
 
34
	public function get_user_info(OAuth2_Token_Access $token)
35
	{
36
		$request_params = array(
37
			'app_id' => $this->client_id,
38
			'method' => 'users.getInfo',
39
			'uids' => $token->uid,
40
			'access_token' => $token->access_token,
41
			'secure' => 1
42
		);
43
 
44
		$sig = $this->sign_server_server($request_params,$this->client_secret);
45
		$url = 'http://www.appsmail.ru/platform/api?'.http_build_query($request_params).'&sig='.$sig;
46
 
47
		$user = json_decode(file_get_contents($url));
48
 
49
		return array(
50
			'uid' => $user[0]->uid,
51
			'nickname' => $user[0]->nick,
52
			'name' => $user[0]->first_name.' '.$user[0]->last_name,
53
			'first_name' => $user[0]->first_name,
54
			'last_name' => $user[0]->last_name,
55
			'email' => isset($user[0]->email) ? $user[0]->email : null,
56
			'image' => isset($user[0]->pic_big) ? $user[0]->pic_big : null,
57
		);
58
	}
59
 
60
	public function authorize($options = array())
61
	{
62
		$state = md5(uniqid(rand(), TRUE));
63
		get_instance()->session->set_userdata('state', $state);
64
 
65
		$params = array(
66
			'client_id' 		=> $this->client_id,
67
			'redirect_uri' 		=> isset($options['redirect_uri']) ? $options['redirect_uri'] : $this->redirect_uri,
68
			'response_type' 	=> 'code',
69
		);
70
 
71
		redirect($this->url_authorize().'?'.http_build_query($params));
72
	}
73
}