aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2011-12-18 20:25:44 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2011-12-18 20:25:44 +0100
commit18c6d369d777a1d38ef450f868c22de1d0ebba2d (patch)
treed9553b908b2129ab4dd483b2c584be8c27fc15ed /lib
parent6e9ae727bcd95eb820fa28becaf9f79ac463de5f (diff)
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/oauth2.c26
-rw-r--r--lib/oauth2.h9
2 files changed, 9 insertions, 26 deletions
diff --git a/lib/oauth2.c b/lib/oauth2.c
index 7cb28105..93891317 100644
--- a/lib/oauth2.c
+++ b/lib/oauth2.c
@@ -27,27 +27,10 @@
#include "oauth.h"
#include "url.h"
-struct oauth2_service oauth2_service_google =
-{
- "https://accounts.google.com/o/oauth2/auth",
- "https://accounts.google.com/o/oauth2/token",
- "urn:ietf:wg:oauth:2.0:oob",
- "783993391592.apps.googleusercontent.com",
- "6C-Zgf7Tr7gEQTPlBhMUgo7R",
-};
-struct oauth2_service oauth2_service_facebook =
-{
- "https://www.facebook.com/dialog/oauth",
- "https://graph.facebook.com/oauth/access_token",
- "http://www.bitlbee.org/main.php/fb.html",
- "126828914005625",
- "4b100f0f244d620bf3f15f8b217d4c32",
-};
-
-char *oauth2_url( const struct oauth2_service *sp, const char *scope )
+char *oauth2_url( const struct oauth2_service *sp )
{
return g_strconcat( sp->auth_url,
- "?scope=", scope,
+ "?scope=", sp->scope,
"&response_type=code"
"&redirect_uri=", sp->redirect_url,
"&client_id=", sp->consumer_key,
@@ -120,10 +103,15 @@ static void oauth2_access_token_done( struct http_request *req )
struct oauth2_access_token_data *cb_data = req->data;
char *atoken = NULL, *rtoken = NULL;
+ if( getenv( "BITLBEE_DEBUG" ) && req->reply_body )
+ printf( "%s\n", req->reply_body );
+
if( req->status_code == 200 )
{
atoken = oauth2_json_dumb_get( req->reply_body, "access_token" );
rtoken = oauth2_json_dumb_get( req->reply_body, "refresh_token" );
+ if( getenv( "BITLBEE_DEBUG" ) )
+ printf( "Extracted atoken=%s rtoken=%s\n", atoken, rtoken );
}
cb_data->func( cb_data->data, atoken, rtoken );
g_free( atoken );
diff --git a/lib/oauth2.h b/lib/oauth2.h
index 6f56b426..c8d18963 100644
--- a/lib/oauth2.h
+++ b/lib/oauth2.h
@@ -31,22 +31,17 @@ struct oauth2_service
char *auth_url;
char *token_url;
char *redirect_url;
+ char *scope;
char *consumer_key;
char *consumer_secret;
};
-/* Currently suitable for authenticating to Google Talk only, and only for
- accounts that have 2-factor authorization enabled. */
-extern struct oauth2_service oauth2_service_google;
-
-extern struct oauth2_service oauth2_service_facebook;
-
#define OAUTH2_AUTH_CODE "authorization_code"
#define OAUTH2_AUTH_REFRESH "refresh_token"
/* Generate a URL the user should open in his/her browser to get an
authorization code. */
-char *oauth2_url( const struct oauth2_service *sp, const char *scope );
+char *oauth2_url( const struct oauth2_service *sp );
/* Exchanges an auth code or refresh token for an access token.
auth_type is one of the two OAUTH2_AUTH_.. constants above. */