root/lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute/Plugin/ID.pm @ 9284

Revision 9284, 3.2 kB (checked in by tokuhirom, 5 years ago)

fallback => 1 だったり fallback => 'with_cardid' だったりするのが、統一性なくて残念なので、fallback_with_cardid => 1 にした。

Line 
1package HTTP::MobileAttribute::Plugin::ID;
2use strict;
3use warnings;
4use base qw/HTTP::MobileAttribute::Plugin/;
5
6sub thirdforce :CarrierMethod('ThirdForce', 'id') {
7    my ($self, $c) = @_;
8    my $id;
9    $id = $c->serial_number if $self->config->{fallback};
10    $c->request->get('x-jphone-uid') || $id;
11}
12
13sub ezweb :CarrierMethod('EZweb', 'id') {
14    my ($self, $c) = @_;
15    $c->request->get('x-up-subno');
16}
17
18sub docomo_default :CarrierMethod('DoCoMo', 'id') {
19    my ($self, $c, $req) = @_;
20    my $id;
21    if ($self->config->{fallback}) {
22        $id = $c->serial_number;
23        $id .= ',' . $c->card_id if $self->config->{fallback_with_cardid} && $c->card_id;
24    }
25    $self->docomo_uid($c, $req) || $self->docomo_guid($c) || $id;
26}
27
28sub docomo_uid :CarrierMethod('DoCoMo', 'uid') {
29    my ($self, $c, $req) = @_;
30    my $uid;
31    $uid = $req->param('uid') if $req;
32    $c->request->get('x-docomo-uid') || $uid;
33}
34
35sub docomo_guid :CarrierMethod('DoCoMo', 'guid') {
36    my ($self, $c) = @_;
37    $c->request->get('x-dcmguid');
38}
39
401;
41__END__
42
43$r->param('uid') L<Apache::DoCoMoUID>
44
45=for stopwords FOMA guid fallback
46
47=encoding UTF-8
48
49=for stopwords DoCoMo
50
51=head1 NAME HTTP::MobileAttribute::Plugin::ID - ユーザIDや端末IDを返す
52
53=head1 DESCRIPTION
54
55    use HTTP::MobileAttribute plugins => [qw/ ID /];
56    my $hma = HTTP::MobileAttribute->new($ua);
57    $hma->id;
58
59ユーザIDが送信されていなければ端末IDを返す
60
61    use HTTP::MobileAttribute plugins => [
62        'Core',
63        +{
64            module => 'ID',
65            config => { fallback => 1 },
66        }
67    ];
68    my $hma = HTTP::MobileAttribute->new($ua);
69    $hma->id;
70
71FOMA の場合にはカードIDも付与する
72
73    use HTTP::MobileAttribute plugins => [
74        'Core',
75        +{
76            module => 'ID',
77            config => { fallback => 1, fallback_with_cardid => 1 },
78        }
79    ];
80    my $hma = HTTP::MobileAttribute->new($ua);
81    $hma->id;
82
83クエリパラメータから uid を取得する。
84
85    $hma->id( $c->req );
86
87uidのみを直接取得する(DoCoMoのみ)
88
89    $hma->uid;
90    $hma->uid( $c->req );
91
92guidのみを直接取得する(DoCoMoのみ)
93
94    $hma->guid;
95
96=head1 DESCRIPTION
97
98'id'メソッド呼ぶと、キャリヤより送信されてくるユーザIDを取得できます。
99
100ユーザの設定によりキャリアからユーザIDが送られてこないときには undef が変えされますが、 load_plugin 時に fallback => 1 と config を追加すると、ユーザIDが取れないときには端末IDを取得するようになります。
101また、 FOMA の時には fallback_with_cardid => 1 と設定すると '端末ID,カードID'という形式でIDが戻されます。
102
103fallback オプションを利用すると、ユーザIDなのか端末IDなのかを気にしたい時に煩雑になりがちなので、 fallback オプションの利用は控えた方が良いでしょう。
104
105なおL<Apache::DoCoMoUID>などにより、 HTTP_X_DOCOMO_UID 環境変数が設定されている場合には uid の取得は HTTP_X_DOCOMO_UID を利用します。
106
107DoCoMo の場合のみ、IDを取得する優先順位は uid -> guid -> fallback の順になります。
108
109=head1 AUTHORS
110
111Kazuhiro Osawa
112
113=head1 SEE ALSO
114
115L<HTTP::MobileAttribute>, L<Net::CIDR::MobileJP>
Note: See TracBrowser for help on using the browser.