From 4e12c1a80a4e97eddedab9df34da93a0a88888d5 Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Thu, 18 Nov 2010 12:13:08 +0000
Subject: [PATCH] twitter: New attribute names + attribute map.

Thanks to Brook Schofield for providing this patch.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2654 44740490-163a-0410-bde0-09ae8108e29a
---
 attributemap/twitter2name.php                   | 17 +++++++++++++++++
 modules/authtwitter/lib/Auth/Source/Twitter.php | 16 +++++++---------
 2 files changed, 24 insertions(+), 9 deletions(-)
 create mode 100644 attributemap/twitter2name.php

diff --git a/attributemap/twitter2name.php b/attributemap/twitter2name.php
new file mode 100644
index 000000000..605b5613e
--- /dev/null
+++ b/attributemap/twitter2name.php
@@ -0,0 +1,17 @@
+<?php
+$attributemap = array(
+
+	// Generated Twitter Attributes
+	'twitter_screen_n_realm'	=>	'eduPersonPrincipalName', // screen_name@twitter.com
+	//'twitter_at_screen_name'	=>	'eduPersonPrincipalName', // legacy @twitter format
+	'twitter_targetedID'		=>	'eduPersonTargetedID', // http://twitter.com!id_str
+
+	// Attributes Returned by Twitter
+	'twitter.screen_name'		=>	'uid', // equivalent to twitter username without leading @
+	//'twitter.id_str'		=>	'uid', // persistent numeric twitter user id
+	'twitter.name'			=>	'displayName',
+	'twitter.url'			=>	'labeledURI',
+	'twitter.lang'			=>	'preferredLanguage',
+	//'twitter.profile_image_url'	=>	'jpegPhoto',
+	'twitter.description'		=>	'description',
+);
diff --git a/modules/authtwitter/lib/Auth/Source/Twitter.php b/modules/authtwitter/lib/Auth/Source/Twitter.php
index d6211e5e6..1fba2eb50 100644
--- a/modules/authtwitter/lib/Auth/Source/Twitter.php
+++ b/modules/authtwitter/lib/Auth/Source/Twitter.php
@@ -115,18 +115,16 @@ class sspmod_authtwitter_Auth_Source_Twitter extends SimpleSAML_Auth_Source {
 		$attributes = array();
 		foreach($userdata AS $key => $value) {
 			if (is_string($value))
-				$attributes[$key] = array((string)$value);
+				$attributes['twitter.' . $key] = array((string)$value);
 			
 		}
 		
-		if (array_key_exists('screen_name', $userdata) )
-			$attributes['eduPersonPrincipalName'] = array('@' . $userdata['screen_name']);
-		if (array_key_exists('name', $userdata) )
-			$attributes['displayName'] = array($userdata['name']);
-		if (array_key_exists('profile_image_url', $userdata) )
-			$attributes['jpegPhoto'] = array(base64_encode(file_get_contents($userdata['profile_image_url'])));
-		if (array_key_exists('url', $userdata) )
-			$attributes['labeledURI'] = array($userdata['url']);
+		if (array_key_exists('screen_name', $userdata) ) {
+			$attributes['twitter_at_screen_name'] = array('@' . $userdata['screen_name']);
+			$attributes['twitter_screen_n_realm'] = array($userdata['screen_name'] . '@twitter.com');
+		}
+		if (array_key_exists('id_str', $userdata) )
+			$attributes['twitter_targetedID'] = array('http://twitter.com!' . $userdata['id_str']);
 			
 		
 		$state['Attributes'] = $attributes;
-- 
GitLab