source: lib/oauth2.h @ 2a6da96

Last change on this file since 2a6da96 was 18c6d36, checked in by Wilmer van der Gaast <wilmer@…>, at 2011-12-18T19:25:44Z

More generic OAuth support now. Should work well for all GTalk accounts now
and somewhat for MS Messenger. The fb part needs different parsing of the
authorize request, and possibly some other work.

  • Property mode set to 100644
File size: 2.6 KB
Line 
1/***************************************************************************\
2*                                                                           *
3*  BitlBee - An IRC to IM gateway                                           *
4*  Simple OAuth2 client (consumer) implementation.                          *
5*                                                                           *
6*  Copyright 2010-2011 Wilmer van der Gaast <wilmer@gaast.net>              *
7*                                                                           *
8*  This program is free software; you can redistribute it and/or modify     *
9*  it under the terms of the GNU General Public License as published by     *
10*  the Free Software Foundation; either version 2 of the License, or        *
11*  (at your option) any later version.                                      *
12*                                                                           *
13*  This program is distributed in the hope that it will be useful,          *
14*  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
15*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *
16*  GNU General Public License for more details.                             *
17*                                                                           *
18*  You should have received a copy of the GNU General Public License along  *
19*  with this program; if not, write to the Free Software Foundation, Inc.,  *
20*  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.              *
21*                                                                           *
22\***************************************************************************/
23
24/* Implementation mostly based on my experience with writing the previous OAuth
25   module, and from http://code.google.com/apis/accounts/docs/OAuth2.html . */
26
27typedef void (*oauth2_token_callback)( gpointer data, const char *atoken, const char *rtoken );
28
29struct oauth2_service
30{
31        char *auth_url;
32        char *token_url;
33        char *redirect_url;
34        char *scope;
35        char *consumer_key;
36        char *consumer_secret;
37};
38
39#define OAUTH2_AUTH_CODE "authorization_code"
40#define OAUTH2_AUTH_REFRESH "refresh_token"
41
42/* Generate a URL the user should open in his/her browser to get an
43   authorization code. */
44char *oauth2_url( const struct oauth2_service *sp );
45
46/* Exchanges an auth code or refresh token for an access token.
47   auth_type is one of the two OAUTH2_AUTH_.. constants above. */
48int oauth2_access_token( const struct oauth2_service *sp,
49                         const char *auth_type, const char *auth,
50                         oauth2_token_callback func, gpointer data );
Note: See TracBrowser for help on using the repository browser.