summaryrefslogtreecommitdiff
path: root/zend/documentation/manual/core/en/zend.gdata.clientlogin.html
blob: ef4a7f757e087df3f11bd3f92975cbc1c5807ccd (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
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Authenticating with ClientLogin - Zend Framework Manual</title>

</head>
<body>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.gdata.books.html">Using the Book Search Data API</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.gdata.html">Zend_Gdata</a></span><br />
                        <span class="home"><a href="manual.html">Programmer's Reference Guide</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.gdata.calendar.html">Using Google Calendar</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.gdata.clientlogin" class="section"><div class="info"><h1 class="title">Authenticating with ClientLogin</h1></div>
    

    <p class="para">
        The ClientLogin mechanism enables you to write <acronym class="acronym">PHP</acronym> application
        that acquire authenticated access to Google Services,
        specifying a user&#039;s credentials in the <acronym class="acronym">HTTP</acronym> Client.
    </p>

    <p class="para">
        See <a href="http://code.google.com/apis/accounts/AuthForInstalledApps.html" class="link external">&raquo; http://code.google.com/apis/accounts/AuthForInstalledApps.html</a>
        for more information about Google Data ClientLogin authentication.
    </p>

    <p class="para">
        The Google documentation says the ClientLogin mechanism is appropriate
        for &quot;installed applications&quot; whereas the AuthSub mechanism is
        for &quot;web applications.&quot; The difference is that AuthSub requires
        interaction from the user, and a browser interface that can react
        to redirection requests. The ClientLogin solution uses <acronym class="acronym">PHP</acronym> code to
        supply the account credentials; the user is not required to enter her
        credentials interactively.
    </p>

    <p class="para">
        The account credentials supplied via the ClientLogin mechanism must
        be valid credentials for Google services, but they are not required
        to be those of the user who is using the <acronym class="acronym">PHP</acronym> application.
    </p>

    <div class="section" id="zend.gdata.clientlogin.login" name="zend.gdata.clientlogin.login"><div class="info"><h1 class="title">Creating a ClientLogin authenticated Http Client</h1></div>
        

        <p class="para">
            The process of creating an authenticated <acronym class="acronym">HTTP</acronym> client using
            the ClientLogin mechanism is to call the static function
             <span class="methodname">Zend_Gdata_ClientLogin::getHttpClient()</span>
            and pass the Google account credentials in plain text.
            The return value of this function is an object of class
            <span class="classname">Zend_Http_Client</span>.
        </p>

        <p class="para">
            The optional third parameter is the name of the Google Data
            service. For instance, this can be &#039;cl&#039; for Google Calendar.
            The default is &quot;xapi&quot;, which is recognized by Google Data
            servers as a generic service name.
        </p>

        <p class="para">
            The optional fourth parameter is an instance of <span class="classname">Zend_Http_Client</span>.
            This allows you to set options in the client, such as proxy
            server settings. If you pass <b><tt>NULL</tt></b> for this
            parameter, a generic <span class="classname">Zend_Http_Client</span> object is created.
        </p>

        <p class="para">
            The optional fifth parameter is a short string that Google Data
            servers use to identify the client application for logging
            purposes. By default this is string &quot;Zend-ZendFramework&quot;;
        </p>

        <p class="para">
            The optional sixth parameter is a string ID for a
            <span_trademark class="trademark">CAPTCHA</span_trademark> challenge that has been issued by
            the server. It is only necessary when logging in after receiving
            a <span_trademark class="trademark">CAPTCHA</span_trademark> challenge from a previous
            login attempt.
        </p>

        <p class="para">
            The optional seventh parameter is a user&#039;s response to a
            <span_trademark class="trademark">CAPTCHA</span_trademark> challenge that has been issued by
            the server. It is only necessary when logging in after receiving
            a <span_trademark class="trademark">CAPTCHA</span_trademark> challenge from a previous
            login attempt.
        </p>

        <p class="para">
            Below is an example of <acronym class="acronym">PHP</acronym> code for a web application
            to acquire authentication to use the Google Calendar service
            and create a <span class="classname">Zend_Gdata</span> client object using that authenticated
            <span class="classname">Zend_Http_Client</span>.
        </p>

        <div class="programlisting php"><div class="phpcode"><div class="php" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">// Enter your Google account credentials</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$email</span> = <span style="color: #ff0000;">'johndoe@gmail.com'</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$passwd</span> = <span style="color: #ff0000;">'xxxxxxxx'</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">try <span style="color: #66cc66;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color: #0000ff;">$client</span> = Zend_Gdata_ClientLogin::<span style="color: #006600;">getHttpClient</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$email</span>, <span style="color: #0000ff;">$passwd</span>, <span style="color: #ff0000;">'cl'</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> catch <span style="color: #66cc66;">&#40;</span>Zend_Gdata_App_CaptchaRequiredException <span style="color: #0000ff;">$cre</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'URL of CAPTCHA image: '</span> . <span style="color: #0000ff;">$cre</span>-&gt;<span style="color: #006600;">getCaptchaUrl</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> . <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'Token ID: '</span> . <span style="color: #0000ff;">$cre</span>-&gt;<span style="color: #006600;">getCaptchaToken</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> . <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> catch <span style="color: #66cc66;">&#40;</span>Zend_Gdata_App_AuthException <span style="color: #0000ff;">$ae</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'Problem authenticating: '</span> . <span style="color: #0000ff;">$ae</span>-&gt;<span style="color: #006600;">exception</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> . <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$cal</span> = <span style="color: #000000; font-weight: bold;">new</span> Zend_Gdata_Calendar<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$client</span><span style="color: #66cc66;">&#41;</span>;</div></li></ol></div></div></div>

    </div>

    <div class="section" id="zend.gdata.clientlogin.terminating" name="zend.gdata.clientlogin.terminating"><div class="info"><h1 class="title">Terminating a ClientLogin authenticated Http Client</h1></div>
        

        <p class="para">
            There is no method to revoke ClientLogin authentication as there
            is in the AuthSub token-based solution. The credentials used
            in the ClientLogin authentication are the login and password
            to a Google account, and therefore these can be used repeatedly
            in the future.
        </p>
    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.gdata.books.html">Using the Book Search Data API</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.gdata.html">Zend_Gdata</a></span><br />
                        <span class="home"><a href="manual.html">Programmer's Reference Guide</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.gdata.calendar.html">Using Google Calendar</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Programmer's Reference Guide</a></li>
  <li class="header up"><a href="manual.html">Programmer's Reference Guide</a></li>
  <li class="header up"><a href="reference.html">Zend Gdata Reference</a></li>
  <li class="header up"><a href="zend.gdata.html">Zend_Gdata</a></li>
  <li><a href="zend.gdata.analytics.html">Using Google Analytics</a></li>
  <li><a href="zend.gdata.authsub.html">Authenticating with AuthSub</a></li>
  <li><a href="zend.gdata.books.html">Using the Book Search Data API</a></li>
  <li class="active"><a href="zend.gdata.clientlogin.html">Authenticating with ClientLogin</a></li>
  <li><a href="zend.gdata.calendar.html">Using Google Calendar</a></li>
  <li><a href="zend.gdata.docs.html">Using Google Documents List Data API</a></li>
  <li><a href="zend.gdata.spreadsheets.html">Using Google Spreadsheets</a></li>
  <li><a href="zend.gdata.gapps.html">Using Google Apps Provisioning</a></li>
  <li><a href="zend.gdata.photos.html">Using Picasa Web Albums</a></li>
  <li><a href="zend.gdata.youtube.html">Using the YouTube Data API</a></li>
  <li><a href="zend.gdata.exception.html">Catching Gdata Exceptions</a></li>
 </ul>
 </td>
    </tr>
</table>
</body>
</html>