When this is settled, Julian/Tony,

can you file a bug against the .NET client to request a feature  
extension for this. It makes no sense not to make that functionality  
part of the default sdk.

Frank
On Dec 4, 2008, at 5:48 AM, Tony (Google) wrote:

>
> Hi Fred,
>
> Can you post the latest code here so I can help you take a look first?
>
> Thanks,
>
> --Tony
>
> On Dec 3, 8:18 pm, NCCFred <[EMAIL PROTECTED]> wrote:
>> Hi Tony,
>>
>> I forgot to add service name and source.
>>
>>  string postData = "accountType=HOSTED&Email=" + email + "&Passwd=" +
>> password + "&service=xapi&source=NCC-TESTAPP-1.0";
>>
>> Once I did this I was able to get the "Auth" token, but I'm still
>> getting the same error.  I'm wondering if Julian could email me the
>> DLL's.
>>
>> Error:
>> ---------
>> Google.GData.Client.GDataRequestException was unhandled
>>   Message="Execution of request 
>> failed:https://www.google.com/a/feeds/students.ncc.edu/user/2.0/intisof 
>> "
>>   Source="Google.GData.Apps"
>>   ResponseString="<HTML>\n<HEAD>\n<TITLE>Token invalid</TITLE>\n</ 
>> HEAD>
>> \n<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">\n<H1>Token invalid</H1>
>> \n<H2>Error 401</H2>\n</BODY>\n</HTML>\n"
>>   StackTrace:
>>        at Google.GData.Apps.UserService.Query(UserQuery feedQuery)
>>        at Google.GData.Apps.AppsService.RetrieveUser(String username)
>>        at GoogleMod.Program.Main(String[] args) in C:\Documents and
>> Settings\Administrator\Desktop\VSprojects\GoogleMod\GoogleMod
>> \Program.cs:line 29
>>        at System.AppDomain._nExecuteAssembly(Assembly assembly,  
>> String
>> [] args)
>>        at System.AppDomain.ExecuteAssembly(String assemblyFile,
>> Evidence assemblySecurity, String[] args)
>>        at
>> Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>>        at System.Threading.ThreadHelper.ThreadStart_Context(Object
>> state)
>>        at System.Threading.ExecutionContext.Run(ExecutionContext
>> executionContext, ContextCallback callback, Object state)
>>        at System.Threading.ThreadHelper.ThreadStart()
>>
>> On Dec 3, 8:40 pm, "Tony (Google)" <[EMAIL PROTECTED]> wrote:
>>
>>> Hi Fred,
>>
>>> Yes, there is really an "Auth" token in the response.  Since all  
>>> three
>>> tokens (SID, LSID and Auth) will be returned in the response, my  
>>> guess
>>> is that your current code logic just skips the second and third  
>>> tokens
>>> as the first condition of the "if" statement is satisfied.  You may
>>> want to update your code logic and create an array to store all  
>>> three
>>> tokens for other services.  For example, the Reporting API is using
>>> the SID.
>>
>>> Thanks,
>>
>>> --Tony
>>
>>> On Dec 3, 5:13 pm, NCCFred <[EMAIL PROTECTED]> wrote:
>>
>>>> Hi Julian,
>>
>>>> Thanks for the code sample, it took me sometime to actually  
>>>> understand
>>>> exactly where this belonged. I was able to add that Constructor  
>>>> code
>>>> to the AppsService Class and recompile the project which produced 3
>>>> new DLL's (Extensions.dll, Client.dll and Apps.dll).  I copied  
>>>> these
>>>> to the correct location on my machine and made a small test app  
>>>> (see
>>>> code below).
>>
>>>> Questions:
>>>> 1. Am I supposed to get a value for "Auth"?  The documentation  
>>>> says I
>>>> will get a SID, LSID and Auth, I do not see the "Auth".  I  
>>>> assumed to
>>>> use the SID and got the following error below when trying to
>>>> RetrieveAllUsers();
>>
>>>> Exception/Error:
>>>> Execution of request 
>>>> failed:https://www.google.com/a/feeds/students.ncc.edu/user/2.0
>>
>>>> Google.GData.Client.GDataRequestException was unhandled
>>>>   Message="Execution of request 
>>>> failed:https://www.google.com/a/feeds/students.ncc.edu/user/2.0 
>>>> "
>>>>   Source="Google.GData.Apps"
>>>>   ResponseString="<HTML>\n<HEAD>\n<TITLE>Token invalid</TITLE>\n</ 
>>>> HEAD>
>>>> \n<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">\n<H1>Token invalid</ 
>>>> H1>
>>>> \n<H2>Error 401</H2>\n</BODY>\n</HTML>\n"
>>>>   StackTrace:
>>>>        at Google.GData.Apps.UserService.Query(UserQuery feedQuery)
>>>>        at Google.GData.Apps.AppsService.RetrieveAllUsers()
>>>>        at GoogleMod.Program.Main(String[] args) in C:\Documents and
>>>> Settings\Administrator\Desktop\TempVS\GoogleMod\GoogleMod
>>>> \Program.cs:line 30
>>>>        at System.AppDomain._nExecuteAssembly(Assembly assembly,  
>>>> String
>>>> [] args)
>>>>        at System.AppDomain.ExecuteAssembly(String assemblyFile,
>>>> Evidence assemblySecurity, String[] args)
>>>>        at
>>>> Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>>>>        at System.Threading.ThreadHelper.ThreadStart_Context(Object
>>>> state)
>>>>        at System.Threading.ExecutionContext.Run(ExecutionContext
>>>> executionContext, ContextCallback callback, Object state)
>>>>        at System.Threading.ThreadHelper.ThreadStart()
>>
>>>> My Code:
>>>> Program.cs
>>>> ---------------------
>>
>>>> using System;
>>>> using System.Collections.Generic;
>>>> using System.Text;
>>>> using Google.GData.Apps;
>>>> using Google.GData.Extensions;
>>>> using Google.GData.Client;
>>>> using System.Web;
>>>> using System.Net;
>>>> using System.Diagnostics;
>>>> using System.IO;
>>
>>>> namespace GoogleMod
>>>> {
>>>>     class Program
>>>>     {
>>>>         static void Main(string[] args)
>>>>         {
>>>>             UserFeed feed = null;
>>
>>>>             string email = "[EMAIL PROTECTED]";
>>>>             string password = "XXXXX";
>>
>>>>             string SID = GetSecurityToken(email, password);
>>>>             Debug.WriteLine("SID = " + SID);
>>
>>>>             AppsService service = new  
>>>> AppsService("students.ncc.edu",
>>>> SID);
>>
>>>>             try
>>>>             {
>>>>                 feed = service.RetrieveAllUsers();
>>
>>>>              for (int i = 0; i < feed.Entries.Count; i++)
>>>>             {
>>>>                 UserEntry entry = feed.Entries[i] as UserEntry;
>>
>>>>                 Debug.WriteLine(entry.Name.FamilyName);
>>>>                 Debug.WriteLine(entry.Name.GivenName);
>>>>                 Debug.WriteLine(entry.Login.UserName);
>>>>             }
>>
>>>>             }
>>>>             catch (AppsException e)
>>>>             {
>>>>                 Debug.WriteLine(e.ErrorCode);
>>>>                 Debug.WriteLine(e.Data);
>>>>                 Debug.WriteLine(e.Message);
>>>>                 Debug.WriteLine(e.Reason);
>>>>                 Debug.WriteLine(e.Response);
>>>>                 Debug.WriteLine(e.ResponseString);
>>>>                 Debug.WriteLine(e.Source);
>>>>             }
>>
>>>>         }
>>
>>>>         static string GetSecurityToken(string email, string  
>>>> password)
>>>>         {
>>>>             string postBody = string.Format(
>>>>                 "accountType=HOSTED&Email={0}&Passwd={1}",
>>>>                 HttpUtility.UrlEncode(email),
>>>>                 HttpUtility.UrlEncode(password));
>>
>>>>             string targetUrl = "https://www.google.com/accounts/
>>>> ClientLogin";
>>
>>>>             string result;
>>>>             HttpStatusCode status;
>>
>>>>             WebUtility.DoHttpPost(targetUrl, postBody, out  
>>>> status, out
>>>> result);
>>
>>>>             string sid = string.Empty;
>>>>             string lsid = string.Empty;
>>
>>>>             foreach (string token in result.Split('\n'))
>>>>             {
>>>>                 if (token.StartsWith("SID="))
>>>>                 {
>>>>                     sid = token.Substring(4);
>>>>                 }
>>>>                 else if (token.StartsWith("LSID="))
>>>>                 {
>>>>                     lsid = token.Substring(5);
>>>>                 }
>>>>                 else
>>>>                 {
>>>>                     if (token.Trim().Length > 0)
>>>>                     {
>>>>                         Debug.WriteLine("Error authenticating  
>>>> Google
>>>> user " + email);
>>>>                     }
>>>>                 }
>>>>             }
>>
>>>>             return sid;
>>>>         }
>>
>>>>     }
>>
>>>> }
>>
>>>> WebUtility.cs
>>>> ----------------------
>>
>>>> using System;
>>>> using System.IO;
>>>> using System.Net;
>>>> using System.Text;
>>
>>>> namespace GoogleMod
>>>> {
>>>>     /// <summary>
>>>>     /// Provides convenience methods for issuing a HTTP "POST"  
>>>> command
>>>> and returning the results.
>>>>     /// </summary>
>>>>     public class WebUtility
>>>>     {
>>>>         private WebUtility() { ;}
>>
>>>>         public static HttpWebResponse DoHttpPost(string targetUrl,
>>>> string postBody)
>>>>         {
>>>>             HttpWebRequest request =
>>>>                 (HttpWebRequest)WebRequest.Create(targetUrl);
>>
>>>>             request.Method = "POST";
>>
>>>>             Encoding encoding = Encoding.GetEncoding("ISO-8859-1");
>>
>>>>             byte[] postBuffer = encoding.GetBytes(postBody);
>>
>>>>             request.ContentLength = postBuffer.Length;
>>>>             request.ContentType = "application/x-www-form- 
>>>> urlencoded";
>>
>>>>             using (Stream requestStream =  
>>>> request.GetRequestStream())
>>>>             {
>>>>                 requestStream.Write(postBuffer, 0,  
>>>> postBuffer.Length);
>>>>             }
>>
>>>>             HttpWebResponse response;
>>
>>>>             try
>>>>             {
>>>>                 response = (HttpWebResponse)request.GetResponse();
>>>>             }
>>>>             catch (WebException we)
>>>>             {
>>>>                 response = (HttpWebResponse)we.Response;
>>>>             }
>>
>>>>             return response;
>>>>         }
>>
>>>>         public static void DoHttpPost(string targetUrl, string
>>>> postBody,
>>>>             out HttpStatusCode resultCode, out string resultBody)
>>>>         {
>>>>             HttpWebResponse response = DoHttpPost(targetUrl,
>>>> postBody);
>>
>>>>             using (StreamReader reader = new StreamReader
>>>> (response.GetResponseStream()))
>>>>             {
>>
>> ...
>>
>> read more ยป
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Apps APIs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-apps-apis?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to