Reviewed in https://codereview.appspot.com/60300043/

Permit AppAssertionCredentials to specify the service account to use,

Fixes issue #325.
diff --git a/oauth2client/appengine.py b/oauth2client/appengine.py
index 799e063..b463d4a 100644
--- a/oauth2client/appengine.py
+++ b/oauth2client/appengine.py
@@ -159,8 +159,12 @@
     Args:
       scope: string or iterable of strings, scope(s) of the credentials being
         requested.
+      kwargs: optional keyword args, including:
+        service_account_id: service account id of the application. If None or
+          unspecified, the default service account for the app is used.
     """
     self.scope = util.scopes_to_string(scope)
+    self.service_account_id = kwargs.get('service_account_id', None)
 
     # Assertion type is no longer used, but still in the parent class signature.
     super(AppAssertionCredentials, self).__init__(None)
@@ -186,7 +190,8 @@
     """
     try:
       scopes = self.scope.split()
-      (token, _) = app_identity.get_access_token(scopes)
+      (token, _) = app_identity.get_access_token(
+          scopes, service_account_id=self.service_account_id)
     except app_identity.Error, e:
       raise AccessTokenRefreshError(str(e))
     self.access_token = token
diff --git a/tests/test_oauth2client_appengine.py b/tests/test_oauth2client_appengine.py
index 4b2c414..d55518b 100644
--- a/tests/test_oauth2client_appengine.py
+++ b/tests/test_oauth2client_appengine.py
@@ -203,6 +203,23 @@
       'http://www.googleapis.com/scope http://www.googleapis.com/scope2',
       credentials.scope)
 
+  def test_custom_service_account(self):
+    scope = "http://www.googleapis.com/scope"
+    account_id = "service_account_name_2@appspot.com"
+    m = mox.Mox()
+    m.StubOutWithMock(app_identity, 'get_access_token')
+    app_identity.get_access_token(
+        [scope], service_account_id=account_id).AndReturn(('a_token_456', None))
+    m.ReplayAll()
+
+    credentials = AppAssertionCredentials(scope, service_account_id=account_id)
+    http = httplib2.Http()
+    credentials.refresh(http)
+    m.VerifyAll()
+    m.UnsetStubs()
+    self.assertEqual('a_token_456', credentials.access_token)
+    self.assertEqual(scope, credentials.scope)
+
 
 class TestFlowModel(db.Model):
   flow = FlowProperty()