forked from SocialiteProviders/Flickr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathServer.php
111 lines (94 loc) · 2.6 KB
/
Server.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
namespace SocialiteProviders\Flickr;
use League\OAuth1\Client\Credentials\TokenCredentials;
use SocialiteProviders\Manager\OAuth1\Server as BaseServer;
use SocialiteProviders\Manager\OAuth1\User;
class Server extends BaseServer
{
/**
* {@inheritdoc}
*/
public function urlTemporaryCredentials()
{
return 'https://www.flickr.com/services/oauth/request_token';
}
/**
* {@inheritdoc}
*/
public function urlAuthorization()
{
return 'https://www.flickr.com/services/oauth/authorize';
}
/**
* {@inheritdoc}
*/
public function urlTokenCredentials()
{
return 'https://www.flickr.com/services/oauth/access_token';
}
/**
* {@inheritdoc}
*/
public function urlUserDetails()
{
return 'https://api.flickr.com/services/rest/?method=flickr.test.login&format=json&nojsoncallback=1';
}
/**
* {@inheritdoc}
*/
public function userDetails($data, TokenCredentials $tokenCredentials)
{
$data = $this->getProfile($data['user']['id']);
$data = $data['person'];
$user = new User();
$user->id = $data['id'];
$user->nickname = $data['username']['_content'];
$user->name = array_get($data, 'realname._content');
$user->extra = array_diff_key($data, array_flip([
'id', 'username', 'realname',
]));
return $user;
}
/**
* {@inheritdoc}
*/
public function userUid($data, TokenCredentials $tokenCredentials)
{
return $data['users'][0]['id'];
}
/**
* {@inheritdoc}
*/
public function userEmail($data, TokenCredentials $tokenCredentials)
{
return $data['users'][0]['email'];
}
/**
* {@inheritdoc}
*/
public function userScreenName($data, TokenCredentials $tokenCredentials)
{
return $data['users'][0]['username'];
}
/**
* Get detals about the current user.
*
* @param string $userId
*
* @return array
*/
public function getProfile($userId)
{
$parameters = [
'method' => 'flickr.people.getInfo',
'format' => 'json',
'nojsoncallback' => 1,
'user_id' => $userId,
'api_key' => $this->clientCredentials->getIdentifier(),
];
$url = 'https://api.flickr.com/services/rest/?'.http_build_query($parameters);
$client = $this->createHttpClient();
$response = $client->request('GET', $url);
return json_decode($response->getBody()->getContents(), true);
}
}