简体   繁体   中英

Converting from GoogleApp Provisioning API to new SDKs

We have been creating and managing our GoogleApps accounts for a couple years by simply generating a block of XML code for the Provisioning API, and then using VBScript to do a POST. Now GoogleApps is requiring that we move to the new Administrative SDKs, and I'm not understanding how, or even if, we can do something similar with the new system.

Here is an example of the code we use to first get an authentication token:

' Create and send XML message to GoogleApps requesting Authentication Token
Set objXMLHTTP = CreateObject("Microsoft.XmlHttp")
objXMLHTTP.open "POST", "https://www.google.com/accounts/ClientLogin", FALSE
objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXMLHTTP.send "&Email=Administrator%40company%2Ecom%2Eedu&Passwd=P@ssw0rd&accountType=HOSTED&service=apps"
If Err.Number <> 0 Then
  WScript.Echo "Error: send request for GoogleApp Authentication Token failed"
  WScript.Quit(1)
End If
' Get response from GoogleApps
strGGAATAuthToken = objXMLHTTP.responseText
If Err.Number <> 0 Then
  WScript.Echo "ERROR: Getting GoogleApp Authentication Token (XMLHTTP.responseText) "
  WScript.Quit(1)
End If
' Check for known errors in response text
If LCase(Left(strGGAATAuthToken, 6)) = "error=" Then
  WScript.Echo "ERROR: GoogleApp replied with Error when asking for Authentication Token"
  WScript.Quit(1)
Else
  ' Extract and return Authentication Token from response text
  strGGAATToken = Mid(strGGAATAuthToken, InStr(strGGAATAuthToken, "Auth=") + 5)
  GetGAAuthToken = True
End If

Here is a sample of the code we then use to create the account:

  ' Create XML Record that will be sent to GoogleApps
  strXMLRecord = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & _
                 "?>" & vbCRLF
  strXMLRecord = strXMLRecord & "<atom:entry xmlns:atom=" & Chr(34) & "http://www.w3.org/2005/Atom" & Chr(34) & _
                 vbCRLF
  strXMLRecord = strXMLRecord & "  xmlns:apps=" & Chr(34) & "http://schemas.google.com/apps/2006" & Chr(34) & _
                 ">" & vbCRLF
  strXMLRecord = strXMLRecord & "    <atom:category scheme=" & Chr(34) & "http://schemas.google.com/g/2005#kind" & _
                 Chr(34) & vbCRLF
  strXMLRecord = strXMLRecord & "      term=" & Chr(34) & "http://schemas.google.com/apps/2006#user" & Chr(34) & _
                 "/>" & vbCRLF
  strXMLRecord = strXMLRecord & "    <apps:login userName=" & Chr(34) & strCGAAUsername & Chr(34) & vbCRLF
  strXMLRecord = strXMLRecord & "      password=" & Chr(34) & strCGAAPwd & Chr(34) & vbCRLF
  strXMLRecord = strXMLRecord & "      changePasswordAtNextLogin=" & Chr(34) & "true" & Chr(34) & vbCRLF
  strXMLRecord = strXMLRecord & "      suspended=" & Chr(34) & "false" & Chr(34) & "/>" & vbCRLF
  ' The following line is just so we have the syntax if we need to set quotas
  '*****strXMLRecord = strXMLRecord & "    <apps:quota limit=" & Chr(34) & "2048" & Chr(34) & "/>" & vbCRLF*****
  strXMLRecord = strXMLRecord & "    <apps:name familyName=" & Chr(34) & strCGAALastName & Chr(34) & " givenName=" & _
                 Chr(34) & strCGAAFirstName & Chr(34) & "/>"
  strXMLRecord = strXMLRecord & vbCRLF & "</atom:entry>" & vbCRLF
  ' Create XML object, set headers, and send to GoogleApps      
  Set objXMLHTTP = CreateObject("Microsoft.XmlHttp")
  objXMLHTTP.open "POST", "https://apps-apis.google.com/a/feeds/company.com/user/2.0", FALSE
  objXMLHTTP.setRequestHeader "Content-type", "application/atom+xml"
  objXMLHTTP.setRequestHeader "Authorization", "GoogleLogin auth=" & strGAAuthToken
  objXMLHTTP.send strXMLRecord
  If Err.Number <> 0 Then
    WScript.Echo "ERROR: unable to XMLHTTP.send for GoogleApps acct creation"
    CreateGAAccount = False
    WScript.Quit(1)
  End If
  ' Get response from GoogleApps
  strResponseText = objXMLHTTP.responseText
  If Err.Number <> 0 Then
    WScript.Echo "ERROR: unable to get objXMLHTTP.responseText during GoogleApps acct creation"
    CreateGAAccount = False
    WScript.Quit(1)
  End If
  ' If response reports an error exit function returning False
  If InStr(Lcase(strResponseText), "errorcode=") <> 0 Then
    WScript.Echo "ERROR: unable to create GoogleApps account"
    CreateGAAccount = False
    WScript.Quit(1)
  End If
  ' Log GoogleApps account information returned from creation
  WScript.Echo "GoogleApp account created for: " & strCGAAUsername

It's probably obvious, but I have a Windows background, not Linux; and I've done scripting, but not real programming. (And I have no experience doing Java and/or other Web programming at all.)

Thanks for any help!!

The steps to use the Admin SDK are very similar. First you will get authenticated, now google uses Oauth 2 here you can find the documentation on that https://developers.google.com/accounts/docs/OAuth2 here you can test how Oauth works: https://developers.google.com/oauthplayground/

After being authenticated you can now call the Directory API to create a new user. Here is the documentation related to the insert method https://developers.google.com/admin-sdk/directory/v1/reference/users/insert

As you can see in the Doc, you will be sending the same parameters (name, password, etc.) but now it won't be formatted as xml, instead those parameter will be formatted as json (here is a little information on json formatting: http://www.w3schools.com/json/ )

I know it's a lot of information, I hope it helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM