summaryrefslogtreecommitdiff
path: root/script/client.pl
blob: 90e3fe1ad46d2af01c18dad72a618afd318833d4 (plain)
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
#!/usr/bin/perl 
use strict;
use warnings;
 
use Net::OpenID::Consumer;
use LWPx::ParanoidAgent;
 
my $csr = Net::OpenID::Consumer->new(
    ua    => LWPx::ParanoidAgent->new,
    #cache => Some::Cache->new, 
    #args  => $cgi, 
    consumer_secret => 'foo',
    required_root => "http://localhost:3000",
  );
 
  # a user entered, say, "bradfitz.com" as their identity.  The first 
  # step is to fetch that page, parse it, and get a 
  # Net::OpenID::ClaimedIdentity object: 
 
  my $claimed_identity = $csr->claimed_identity("http://localhost:3000") || die $csr->err;
 
  # now your app has to send them at their identity server's endpoint 
  # to get redirected to either a positive assertion that they own 
  # that identity, or where they need to go to login/setup trust/etc. 
 
  my $check_url = $claimed_identity->check_url(
    return_to  => "http://localhost:3000/openid-check.app?yourarg=val",
    trust_root => "http://localhost:3000/",
  );
 
  # so you send the user off there, and then they come back to 
  # openid-check.app, then you see what the identity server said. 
 
  # Either use callback-based API (recommended)... 
  $csr->handle_server_response(
      not_openid => sub {
          die "Not an OpenID message";
      },
      setup_required => sub {
          my $setup_url = shift;
          print "setup_required $setup_url\n";
          # Redirect the user to $setup_url 
      },
      cancelled => sub {
            print "cancelled\n";
          # Do something appropriate when the user hits "cancel" at  
          # the OP 
      },
      verified => sub {
          my $vident = shift;
          print "verified $vident\n";
          # Do something with the VerifiedIdentity object $vident 
      },
      error => sub {
          my $err = shift;
          die($err);
      },
  );