Tuesday, March 10, 2015
Upcoming changes to OAuth 2 0 endpoint
Editors note: This post by Google Senior Product Manager Justin Smith has been cross-posted from the Google Code blog because we think itll be of great interest to Google Apps developers. -- Ryan Boyd
In the coming weeks we will be making three changes to the experimental OAuth 2.0 endpoint. We expect the impact to be minimal, and we’re emailing developers who are most likely to be affected.
We will be releasing these changes on November 15, 2011. This post describes the changes, their impact, and how they can be mitigated.Change #1: Error responses for client-side web applications
The first change relates to the way errors are returned in OAuth 2.0 client-side web applications. It does not impact server-side, native, or device flows.
The current behavior of the OAuth 2.0 endpoint in certain error conditions is to return the error to the application as a query string parameter, for example:
https://www.example.com/back?error=access_denied.The OAuth 2.0 specification indicates that the error should be returned in the fragment of the response. We are updating our OAuth 2.0 implementation to support the most recent draft of the specification. As a result, we will be changing the way we return errors to applications in the client-side flow.
As an example, today an error returns to your application as
https://www.example.com/back?error=access_denied. After this change, it will be returned as https://www.example.com/back#error=access_denied. There is no mitigation for this change, so your application will have to handle these types of errors in client-side script.
Change #2: Offline access as a separate parameter
The second change impacts the OAuth 2.0 server-side flow only. It does not impact client-side, native, or device flows. For context, this flow consists of the following steps:
- Redirect the browser to the Google OAuth 2.0 endpoint.
- The user will be shown a consent page.
- If the user consents, parse the authorization code from the query string of the response.
- Exchange the authorization code for a short-lived access token and a long-lived refresh token.
The client-side flow, in contrast, requires the user to be present when obtaining an access token. This type of access is called online.
With this change, we will be exposing online and offline access as a separate parameter that’s available only in the server-side flow.
When your application requests offline access, the consent page shown to a user will reflect that your application requests offline access and your application will receive an access and a refresh token. Once your application has a refresh token, it may obtain a new access token at any time.
When your application requests online access, your application will only receive an access token. No refresh token will be returned. This means that a user must be present in order for your application to obtain a new access token.
If unspecified in the request, online is the default.
A mitigation for this change is described at the end of this post.
Change #3: Server-side auto-approval
This change also impacts the OAuth 2.0 server-side flow only.
In the current implementation of OAuth2, every time your application redirects a user to Google, that user must give explicit consent before an authorization code is given to your application. As a result, sending a user through the flow another time requires them to see the consent screen again. Most applications don’t do this, but rather use the existing server-side flow as it was intended: a one-time association (import contacts, calendar operations, etc.) where the result is a refresh token which may be used to obtain new access tokens.
The behavior is changing to the following:
- Users will only see the consent screen on their first time through the sequence.
- If the application requests offline access, only the first authorization code exchange results in a refresh token.
The next section describes how to mitigate this change.
Mitigation of offline access (#2) and auto-approval (#3) changes
If you want to keep the existing behavior in your server-side applications, include the
approval_prompt=force and access_type=offline parameters in an authorization code request.For example, if the following is a target URL for obtaining an authorization code today:
https://accounts.google.com/o/oauth2/auth?You can maintain the current behavior by changing the target URL to:
client_id=21302922996.apps.googleusercontent.com&
redirect_uri=https://www.example.com/back&
scope=https://www.google.com/m8/feeds/&
response_type=code
https://accounts.google.com/o/oauth2/auth?You may start including these parameters in authorization code requests today.
client_id=21302922996.apps.googleusercontent.com&
redirect_uri=https://www.example.com/back&
scope=https://www.google.com/m8/feeds/&
response_type=code&
access_type=offline&
approval_prompt=force
Questions?
If you have any questions or comments, please post on the OAuth 2.0 Group (https://groups.google.com/forum/#!forum/OAuth 2.0-dev). We will be actively monitoring that group and will work to respond quickly.
![]() | Justin Smith Justin Smith is a Product Manager who works on authentication and authorization technologies at Google. He enjoys woodworking, cycling, country music, and the company of his wife (not necessarily in that order). |
Monday, March 9, 2015
Python OAuth 2 0 Google Data APIs
Since March of this year, Google has supported OAuth 2.0 for many APIs, including Google Data APIs such as Google Calendar, Google Contacts and Google Documents List. Googles implementation of OAuth 2.0 introduces many advantages compared to OAuth 1.0 such as simplicity for developers and a more polished user experience.
We’ve just added support for this authorization mechanism to the gdata-python-client library-- let’s take a look at how it works by retrieving an access token for the Google Calendar and Google Documents List APIs and listing protected data.
Getting Started
First, you will need to retrieve or sync the project from the repository using Mercurial:
hg clone https://code.google.com/p/gdata-python-client/
For more information about installing this library, please refer to the Getting Started With the Google Data Python Library article.
Now that the client library is installed, you can go to your APIs Console to either create a new project, or use information about an existing one from the API Access pane:

Getting the Authorization URL
Your application will require the user to grant permission for it to access protected APIs on their behalf. It must redirect the user over to Googles authorization server and specify the scopes of the APIs it is requesting permission to access.
Available Google Data API’s scopes are listed in the Google Data FAQ.
Heres how your application can generate the appropriate URL and redirect the user:
import gdata.gauth
# The client id and secret can be found on your API Console.
CLIENT_ID =
CLIENT_SECRET =
# Authorization can be requested for multiple APIs at once by specifying multiple scopes separated by # spaces.
SCOPES = [https://docs.google.com/feeds/, https://www.google.com/calendar/feeds/]
USER_AGENT =
# Save the token for later use.
token = gdata.gauth.OAuth2Token(
client_id=CLIENT_ID, client_secret=CLIENT_SECRET, scope= .join(SCOPES),
user_agent=USER_AGENT)
# The “redirect_url” parameter needs to match the one you entered in the API Console and points
# to your callback handler.
self.redirect(
token.generate_authorize_url(redirect_url=http://www.example.com/oauth2callback))
If all the parameters match what has been provided by the API Console, the user will be shown this dialog:

When an action is taken (e.g allowing or declining the access), Google’s authorization server will redirect the user to the specified redirect URL and include an authorization code as a query parameter. Your application then needs to make a call to Google’s token endpoint to exchange this authorization code for an access token.
Getting an Access Token
import atom.http_core
url = atom.http_core.Uri.parse_uri(self.request.uri)
if error in url.query:
# The user declined the authorization request.
# Application should handle this error appropriately.
pass
else:
# This is the token instantiated in the first section.
token.get_access_token(url.query)
The redirect handler retrieves the authorization code that has been returned by Google’s authorization server and exchanges it for a short-lived access token and a long-lived refresh token that can be used to retrieve a new access token. Both access and refresh tokens are to be kept private to the application server and should never be revealed to other client applications or stored as a cookie.
To store the token object in a secured datastore or keystore, the gdata.gauth.token_to_blob() function can be used to serialize the token into a string. The gdata.gauth.token_from_blob() function does the opposite operation and instantiate a new token object from a string.
Calling Protected APIs
Now that an access token has been retrieved, it can be used to authorize calls to the protected APIs specified in the scope parameter.
import gdata.calendar.client
import gdata.docs.client
# Access the Google Calendar API.
calendar_client = gdata.calendar.client.CalendarClient(source=USER_AGENT)
# This is the token instantiated in the first section.
calendar_client = token.authorize(calendar_client)
calendars_feed = client.GetCalendarsFeed()
for entry in calendars_feed.entry:
print entry.title.text
# Access the Google Documents List API.
docs_client = gdata.docs.client.DocsClient(source=USER_AGENT)
# This is the token instantiated in the first section.
docs_client = token.authorize(docs_client)
docs_feed = client.GetDocumentListFeed()
for entry in docs_feed.entry:
print entry.title.text
For more information about OAuth 2.0, please have a look at the developer’s guide and let us know if you have any questions by posting them in the support forums for the APIs you’re accessing.
| Alain Vongsouvanh profile | events Alain is a Developer Programs Engineer for Google Apps with a focus on Google Calendar and Google Contacts. Before Google, he graduated with his Masters in Computer Science from EPITA, France. |
Updated 9/30/2011 to fix a small typo in the code
Monday, March 2, 2015
e Learning 2 0 Workshop Stephen Downes
- Link to Stephen Downes Homepage
- All His Papers
- All His Presentation Slides + KL Workshop Slides
- Blogs - OLDaily & Half an Hour

Web 1.0 = Read
Web 2.0 = Read -Write
Web 3.0 = Read -Write - Research
Web 4.0 = Read -Write - Research - Rambo!
At last I got to meet Stephen Downes in person and attend one of his workshops. Better yet, due to a secret arrangement (Not telling!) I got to become his personal bodyguard (I mean assistant) during this 2-day workshop in Kuala Lumpur (14th - 15th January). You can see me on the picture happily holding tightly to the handheld laser gun (I mean camera!).
In this e-Learning 2.0 workshop facilitated by Stephen (who actually entitled it Web 2.0 in Learning), participants explored a full range of web 2.0 tools, and discussed (including group activities) how these tools could facilitate more effective communication, collaboration and learning. The intention was to explore the underlying technologies and to develop a sense of what to expect in the future.
NEW DISCOVERIES?
The thing about attending workshops facilitated by people like Stephen is that you can be sure of discovering a lot of new learning stuff on the way. Here are new learning tools and sites that I discovered during this great workshop:
- Gliffy - A free web-based diagram editor.
- Zoho - Offers a suite of online web applications geared towards increasing your productivity and offering easy collaboration.
- LiveJournal - A free service for your journaling and blogging.
- Bebo - Allows users to share photos with music, and blogs, and draw on members White Boards.
- Pixer - Lets you manipulate, edit, enhance and apply filters to your digital pictures using only your web browser.
- Ustream.tv - You can broadcast your own live video show for free. You only need a computer device, camera and solid Internet connection. Not bad!
- Worldbridges - A community of communities that use homegrown webcasting and other new media technologies to help people connect, learn, & collaborate.
- EdTechTalk - A community of educators interested in discussing and learning about the uses of educational technology. They webcast several live shows each week.
In addition, we discussed many other web 2.0 learning tools such Ning (Social Networking), Second Life ( 3D virtual world) and Wikispaces, which I have already explored, but are worth mentioning here (Check out the slides to discover the rest!).
Not only did we discover new tools from Stephen, he also discovered a few new learning tools from us, including:
- WiZiQ - Free Hosted Virtual Classroom platform.
- CamStudio - Free Screen Recording Software.
- eSnips - Get 5GB of free space to upload and share your files, photos, videos and music.
In other words, no matter how brilliant we are, we can always learn and discover stuff from others. Therefore, I would argue that Stephen Downes is brilliant, because he knows this and practices it all the time (Any logic here!).
However, of all the things I discovered, learned and explored during the workshop, I personally found the reading resources shared the most valuable to my learning mind. I suppose it is easier to find a new tool or site (at least for me!), than discover a great article or paper among millions. Anyway, here is a list of a few of those relevant and mind enriching writings, which Stephen recommended us to explore further (Check out the slides to discover the rest! 2nd time!):
- The Cluetrain Manifesto - Markets are about conversations (an e-Book by several authors). If you are lazy, at least read the 95 theses to get some idea.
- E-Learning 2.0 - (Stephen Downes)
- What is Web 2.0 - The web as platform. Design patterns and business models for the next generation of software (Tim OReilly).
- Educational Blogging - (Stephen Downes)
- How to Be Heard - (Stephen Downes)
- The Long Tail - Why the future of business is selling less of more (Clay Shirky/Chris Anderson).
- MySpace is My Identity Space - (Danah Boyd)
- Wisdom of Crowds - (James Surowiecki)
And the juicy list of excellent reading resources (especially about blogging and social networks) goes on and on (Check out the slides to discover the rest! 3rd time lucky!). As I had not read many of these recommended reading resources before, it was a thrill to discover them.
LESSONS LEARNEDStephen identifies five (5) main future directions of learning (and e-learning) in his slides. I have added some of my thoughts to these five directions.
- Learning as Creation - We increasingly learn by creating/remixing knowledge, products and services during the learning process (not only consuming), with the assistance of increasingly more powerful and user-friendly learning tools.
- Social Learning - We learn by interacting with others locally and around the world, which is increasingly being enabled more efficiently and effectively with the assistance of technology (Global Collective Intelligence). Imagine participating in global learning communities and getting access to some of the greatest minds on this planet with just a few clicks. Here I am talking to Jay Cross, Jane Knight, Joseph Hart, Stephen Downes and Clayton Wright on Skype. The only cost is basically our time.
- Personal Learning Environment - People will increasingly be able to construct their own customized and convenient learning spaces, which integrates all their informal and formal learning tools. In other words, we might soon say goodbye to LMS, LCMS, portals, etc., sooner than we realize. They will probably exist, but we will hardly visit them, and mostly read their news feeds from our all-to-one learning dashboards. One User ID and Password! One Learning Space! Tons of Learning Tools! All are communicating with one another! We can get all our relevant updates from one learning space, and we can update all our learning tools with one update (Create once, publish many). WOW! That is cool!
- Immersive Learning - Augmented reality and 3D virtual worlds with fully immersive tools enabling every sense of our body to engage in the learning process. It also reflects that we will increasingly be able to construct cost-effective simulated learning environments that are close to the real thing. We are able to do and practice things in safe virtual learning environments that we could only dream about in the past (e.g. manage Google, build spaceships, teleport to Mars, discuss global warming with Al Gore, and engage in past civilizations). In short, we can stimulate all our senses to fully immerse ourselves in safe virtual learning environments that are similar, or close replications of the real ones. Practice without getting physically hurt (though, we might get a bit of mental stress!).
- The Living Arts (Things You Really Need to Learn) - We dont follow strictly the requirements and needs of PhD, Masters, Bachelor and Diploma programs, programs are instead tailored to our relevant learning needs, and we are empowered to construct our own learning opportunities and environments that enable and motivate us to find and fulfill our learning potential. Why learn something that we never use, or want to know?
In addition to learning a lot of stuff from Stephen, I learned a lot from more than 40 participants both from the corporate and the education (mostly Higher Education) sectors in Malaysia (picture below). Interestingly, we are also planning to start an official e-Learning community (whereby we physically meet on regular occasions) in Malaysia, and if you are interested to find out more about that, please join or visit our new Malaysian e-Learning Community in Facebook (you need a Facebook account to join).
Finally, I would like to thank FIK International for organizing a great workshop.
Oh, I forgot (this post is getting long!)! You might be wondering why Stephen and the Myau picture. Well, during the first day of the workshop we all suddenly heard the sound of cat (Myau), and Stephen probably thought he was going a bit nutty, or the jet lag was really getting to him (which it was, I suppose!). However, it was only a ringtone to one of the participants, and we all had a great laugh! So, the picture is in memory of this funny informal learning incident. Myau!!!
In conclusion, I am glad that I attended the workshop (and became Stephens workshop assistant), and got to know Stephen better. These are the kind of learning experiences that spark our motivation to learn and explore more. Yeah, now I am also a certified e-Learning 2.0 specialist (by attendance). If you are interested to learn more, please give me a buzz :)

Thursday, February 26, 2015
PDF Creator 0 8 Excellent Free
"PDFCreator (0.8) is a free tool to create PDFs easily from nearly any application. With the PDFCreator Printer driver you turn any program into a PDF-machine"
Improvements (in Version 0.8):
- Security! PDFCreator can handle either security settings from AFPL Ghost above 8.14 or can use then program pdfenc from Steven Lee.
- Improved printer driver handling
- 2 new variables: OptionsEnable and OptionsVisible (a simple protection to save the options - useful for administrators) Set this variables manually in the file PDFCreator.ini to save the options.
- Email Clients: Succesfully tested with MS Outlook, Outlook Express, Thunderbird, Eudora,
- Pegasus Mail (WsendTo.exe), The Bat!, Foxmail, Sylpheed-Claws, IncrediMail Problems with: Ak-Mail, GeMail, Postguard, Vivian Mail
- Add PDF document properties Keywords and Subject
- You can add printable files (also via Drag and Drop) and through the windows explorer context menu.
- Added Commandline parameter PF: Convert a printable file in a pdf document example: pdfcreator.exe -PF"c:autoexec.bat"
- Update check from PDFCreator Menu.
Sunday, February 15, 2015
Friday, February 13, 2015
TeamViewer v9 0 23724 Server Enterprise full version with crack

Today, TeamViewer announces a new beta version of its popular remote control software for Windows, Mac and Linux PCs. The latest release, named TeamViewer 9 Beta, introduces new features aimed at businesses, developers and end-users as well as security improvements.
The most noteworthy security addition in TeamViewer 9 Beta is two-factor authentication. It allows users to add an extra layer of protection to their accounts by using security codes, that can be sent to their mobile devices and, alternatively, generated by dedicated mobile apps. On Macs, TeamViewer 9 also adds the option to increase the password strength in QuickSupport.
"TeamViewer has always been focused on remote support functionality", says the companys head of product management Kornelius Brunner. "With TeamViewer 9, we are going back to the roots and offering even better features for support teams in companies large and small".
Service Queue is a new TeamViewer 9 Beta feature aimed at IT staffs, that provides the option to assign, manage and share requests for immediate support. Users who join remote support sessions can now use a unique code, that is created specifically for that session, instead of having to exchange a username and password. The unique code can be distributed as a link.
The software adds the option to save customized customer modules with the companys branding (for Host, QuickJoin or QuickSupport) in the TeamViewer Management Console. The modules can be tailored, as needed, to a customer, group or support provider. The customers will receive the latest TeamViewer version, following any modifications.
TeamViewer 9 Beta introduces tab support. This allows users to open multiple remote control sessions and view multiple displays in a single window. Tabs can flash, indicating new activity.
Wake-on-LAN is now supported, allowing users to trigger a remote wake of the PCs they wish to control. The feature only works between devices connected to the same local network.
In TeamViewer 9 Beta users can take advantage of a univeral clipboard, which allows them to copy and paste content from their current device to a remotely-controlled one (files, folders, text and tables are supported). The formatting is carried over.
Using an FTP server, the software allows users to send files to devices and contacts without initiating remote control sessions. This offers an alternative to cloud-based storage services in such instances.
Specifically for Mac users, TeamViewer 9 Beta also adds the file box for quick sharing while using the software and the option to add a disclaimer when creating customized QuickSupport modules, which users have to accept before launching the software.
TeamViewer 9 Beta informs users of any new notifications in the Computers & Contacts area. The notifications include alerts for TeamViewer monitoring, ITBrain, new service cases, new contact requests and service cases assigned to the user. Read more
C Program to calculate roots of quadratic equation ax 2 bx c 0
#include<iostream.h>
#include<conio.h>
#include<math.h> //to claculate square root
void main()
{
clrscr(); //to clear the screen
float root1,root2,a,b,c,d;
cout<<"Quadratic Equation is ax^2=bx+c=0";
cout<<" Enter values of a,b and c:";
cin>>a>>b>>c;
d=(b*b)-(4*a*c);
if(d>0)
{
cout<<"
Two real and distinct roots";
root1=(-b+sqrt(d))/(2*a);
root2=(-b-sqrt(d))/(2*a);
cout<<"
Roots are "<<root1<<" and "<<root2;
}
else
if(d==0)
{
cout<<"
Two real and equal roots";
root1=root2=-b/(2*a);
cout<<"
Roots are "<<root1<<" and "<<root2;
}
else
cout<<"
Roots are COMPLEX and IMAGINARY....!!!";
getch(); //to stop the screen
}
Wednesday, February 11, 2015
KARAOKE SOUND TOOLS 1 0 15 FULL VERSION WITH SERIAL KEY
- Remove vocals from a song
- Change the key of a song to better suit your voice
- Change the tempo of a song to make it easier to sing
- Process MP3, WAV, BIN, and MP3G (MP3 and CDG) file formats
- Combine multiple songs to create a karaoke song medley
- Clip karaoke songs to remove dead air
- control the amount of bass and treble processing
- remove vocals from non-centered recordings using balance
- adjust karaoke voice removing level and output attenuation
- create multiplex tracks (with vocal in the left and instrumental part in the right channel)
- change the pitch in the -12 to +12 semitone (half-note steps) range
- after processing, music instruments have no chipmunk or time speed up or down, holding the tempo the same as if the original studio recorded in your key
- you can process karaoke songs with lyrics (BIN and MP3G)
- change the tempo of a song from two times slower to twice as fast
- our tempo changer retains the original key of a song
- you can process karaoke songs with lyrics – they will be adjusted to stay in sync
- combine any number of MP3+G, ZIP, or BIN files
- remove silence (dead air) between songs
- process any number of MP3+G, ZIP, or BIN files at once
- remove silence (dead air) at the beginning or at the end of a song
- remove the beginning of a song and start at the exact moment (this can be used to remove logos or images from songs)
click to begin
9 MB
