Showing posts with label google. Show all posts
Showing posts with label google. Show all posts

Wednesday, March 11, 2015

Improved Customer Engagement Discovery in the Google Apps Marketplace

We recently updated the Google Apps Marketplace with several new features to help developers better engage with their customers and improve discoverability of apps in the marketplace.

Reply to Comments & Reviews

It’s no secret that engaging your customers and responding to their feedback is critical to success. It’s now possible to engage in conversations with customers based on comments & reviews for your app in the marketplace.

Rich Application Snippets in Google Search

Google Search recently introduced rich snippets for applications several months ago with enhanced search results for applications from marketplaces like Android Market and others. Marketplace apps will soon be appearing as rich snippets with ratings and pricing details.

New Category Home Pages

Lastly, we introduced new home pages for each category in the Marketplace to feature the top installed and newest apps for that category.

We hope that you find value in these changes and wish everyone a happy new year!



Steven Bazyl   profile | twitter | events

Steve is a Developer Advocate for Google Apps and the Google Apps Marketplace. He enjoys helping developers find ways to integrate their apps and bring added value to users.


Read more »

Google DevFest coming to Australia


Google DevFest Australia is a week long series of mini-conferences similar to Google I/O. DevFest will run from June 28th through July 2nd with scheduled sessions on Google Apps, App Engine, Wave, Chrome, Social, and Geo/Maps. Patrick Chanezon and I will be speaking on Tuesday covering Google Apps, App Engine, and Google Apps Marketplace.

DevFest is a Google kind of event for developers that is part hackathon, part seminar, and all fun. Developers will have access to Google developers, our newest APIs, and hear about the latest code to be open sourced.

It is also a learning experience for us at Google. We always like to see what developers are doing with our code and APIs. Working with developers is natural for us. Come see us if you are in Australia, and watch for blog updates and Tweets throughout the week. Here is a link to the sessions and registration information.

Watch this space for announcements of upcoming DevFests in other parts of the world.

Read more »

Tuesday, March 10, 2015

Integrating your Rails application with Google Apps and the Apps Marketplace

Editor’s note: Vincent Van Gemert is a software engineer at Floorplanner, an online floor planning application which launched in June on the Google Apps Marketplace.

In this article you will find a step-by-step guide to integrating your Ruby on Rails application with Google Apps and launching it on the Google Apps Marketplace. The Google Apps Marketplace is a great platform to get new clients, show off our product and integrate Floorplanner with the services Google provides. At the beginning of the summer we tried to launch our application on the Marketplace. We found out that a lot of people were struggling with the existing Rails libraries and the OAuth authorization method, therefore we would like to provide this tutorial to help other developers. I would like to thank DuĊĦan Maliarik for building this implementation with me and finding the solution for using the two-legged OAuth authorization.

1. The initial setup

Before you start programming there is some required setup. You first have to add a new application on the Google Apps Marketplace. You will need a Vendor Profile for this and a Google account. Sign In to the Marketplace with your Google account and go to your Vendor Profile using the link at the top-right of the Marketplace homepage.

After you enter some information about your company, there will be a list of your applications called “Listings.” You need to create a new listing to develop and test your application. When you create a new listing, check the box which says “My product may be directly installed into Google Apps domains.” This is necessary if you want the application to have an “Add it Now” button on the listing page, and allows you to add a Manifest to describe the application.

A Manifest describes all the settings of your application, like the name, URL’s and required permissions. Below you can find an example manifest. You will need to change all fields surrounded by brackets [ ].
<?xml version="1.0" encoding="UTF-8" ?>
<ApplicationManifest xmlns="http://schemas.google.com/ApplicationManifest/2009">

<Name>[ApplicationName]</Name>
<Description>[Description]</Description>

<!-- Administrators and users will be sent to this URL for application support -->
<Support>
<!-- URL for application setup as an optional redirect during the install -->
<Link rel="setup" href="[ApplicationSetupUrl]?domain=${DOMAIN_NAME}" />

<!-- URL for application configuration, accessed from the app settings page in the control panel -->
<Link rel="manage" href="[ApplicationAdminUrl]?domain=${DOMAIN_NAME}" />

<!-- URL explaining how customers get support. -->
<Link rel="support" href="[ApplicationHelpUrl]" />

<!-- URL that is displayed to admins during the deletion process, to specify policies such as data retention, how to claim accounts, etc. -->
<Link rel="deletion-policy" href="[ApplicationPolicyUrl]" />
</Support>

<!-- Show this link in Googles universal navigation for all users -->
<Extension id="navLink" type="link">
<Name>[ApplicationName]</Name>
<Url>[ApplicationLoginUrl]?domain=${DOMAIN_NAME}</Url>
<!-- Used APIs -->
<Scope ref="contactFeed"/>
<Scope ref="spreadsheetFeed"/>
<Scope ref="doclistFeed"/>
</Extension>

<!-- Declare our OpenID realm so our app is white listed -->
<Extension id="realm" type="openIdRealm">
<Url>[ApplicationRealm]</Url>
</Extension>

<Scope id="doclistFeed">
<Url>https://docs.google.com/feeds/</Url>
<Reason>[Reason]</Reason>
</Scope>

<Scope id="contactFeed">
<Url>https://www.google.com/m8/feeds/</Url>
<Reason>[Reason]</Reason>
</Scope>

</ApplicationManifest>

You should decide whether you want to create a setup page. During the installation process of the application you will be redirected to the URL you specified in the manifest under “setup”. This is useful for collecting additional information necessary for configuring the app, or setting up a new umbrella account for the company. The umbrella account allows you to use other users of the domain as sub-users. You can also retrieve other information, like the administrators of the domain, the logo of the Google Apps account, or the domain name of the Google Apps account. If you don’t want to redirect customers to your site during the installation process, then just remove the line from your manifest.

2. Rails libraries and OpenID

The code you’re going to use relies on several Rails plugins and gems. The plugins/gems needed for this tutorial are listed below.
  • OAuth Gem
  • Ruby-openid
  • Rack-openid
  • Ruby-openid-apps-discovery
After installing these, you will be able to use OpenID, OAuth and the Google Data APIs in your Rails application. First you are going to authenticate the user with OpenID. This way you can retrieve the user’s email address and other information like First and Last name. The OpenID implementation is straight-forward. When using OpenID, a connection will be made to Google’s OpenID service and will check if the user granted access to your application. In typical OpenID, a ‘grant access’ page or login page is presented if the user hasn’t granted access to the app, though this won’t happen if you have a Google Apps Marketplace application installed with a properly configured realm as access is granted by the administrator for all of their users. This process can be found in the example code below.

def login

# The domain needs to be set. For example with params[:domain]
authenticate_with_open_id(params[:domain]),
{ :required => ["http://axschema.org/contact/email"], :return_to => /login}) do |result, identity_url, registration|

if result.successful?
# Succesfully logged in, retrieve email address
email = get_email(registration)
else
# Failed to login
end
end

end

def get_email(registration)

ax_response = OpenID::AX::FetchResponse.from_success_response(
request.env[Rack::OpenID::RESPONSE])
ax_response.data["http://axschema.org/contact/email"].first

end

After reviewing this code sample you can alter it for using it with the setup page. Authenticate with OpenID when a user goes into the setup procedure and redirect them to the actual setup page after they are authenticated.

After your setup page is complete you can add your Google Apps Marketplace listing to your Google Apps account. Note that administrator privileges are necessary to add the application to your Google Apps account. You can add the application from the Vendor Profile when you click on your newly created application. A big blue button will appear on the right side of the listing’s information page. More information on this process can be found on the Creating a Listing page in the Marketplace developer documentation.

3. Using the Google Data APIs

When using the Google Data APIs outside of the Apps Marketplace you have to get access to a user’s data using three-legged OAuth, AuthSub or ClientLogin. These authorization methods require your application to redirect the user to Google’s site to request authorization. Because you’ve already authenticated the user by using OpenID and an administrator has granted authorization to the user’s data when they added your application to their Google Apps domain, you don’t want to use these methods.

For the Google Apps Marketplace there is another option-- two-legged OAuth. Two-legged OAuth allows your application to use a single consumer key and secret (available from the Vendor Profile) to access the data for all your customers who have installed the Marketplace app and granted the appropriate permissions. Because the administrators have granted permission on behalf of their users, each user does not need to be prompted individually.

The first thing you should try is to retrieve a contact list of a user. You could use it for auto completion on forms, or you can let users quickly add friends to your application.

CONSUMER_KEY = "Your-consumer-key"
CONSUMER_SECRET = "Your-consumer-secret"

def get_contacts

# Retrieve contacts
email = "user@email.com"
url = "https://www.google.com/m8/feeds/contacts/default/full?xoauth_requestor_id=#{email}"
contacts = gdata_request(url, :get)

end

def gdata_request(url, method, headers = {}, data = "")

uri = URI.parse(url)

# Setting up two-legged-oauth
consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET)
oauth_params = {:consumer => consumer, :method => method, :request_uri => uri.to_s}

# Set Net:HTTP connection
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.port == 443)

if method == :post
req = Net::HTTP::Post.new(uri.request_uri)
req.body = data
else
req = Net::HTTP::Get.new(uri.request_uri)
end

# Set authorization header
oauth_helper = OAuth::Client::Helper.new(req, oauth_params)
req.initialize_http_header(headers.merge({Authorization => oauth_helper.header}))

# Execute request
response = http.request(req)
response.body

end

The feature we struggled with the most during the integration of Floorplanner was the two-legged OAuth authorization. There was no documentation available for the gems and it took some attempts to get it right. We turned to the OAuth Playground to find out the differences between our own request and the working request. After numerous tries we found out that we need to specify the HTTP method in order to get it working. It was important to use the Net::HTTP::Post request when sending information and Net::HTTP::Get request when retrieving information. This sounds logical, but it also needed to be done when retrieving the authorization header in the OAuth Client Helper, as well as in the Net HTTP request. Now we have this code, we can generate a request for almost every call in the Google Data API’s.

In the next example, you will use the Google Docs API to send a CSV file to a user’s Google Docs account. You need to do a POST request to the Google Docs feed. The request is almost the same as in the previous example, only you need to add two more headers. One is the Content-Type where you specify the MIME type you want to send. In this case, you’re uploading a CSV file so “text/csv” will do. Another header you need to send is the Slug. This value specifies the name you want for the document in Google Docs. Another way of doing this is adding meta-data to the body of the request. More information on this method can be found in the the Google Docs documentation.

def submit_csv_to_gdocs

email = user@email.com
url = https://docs.google.com/feeds/default/private/full?xoauth_requestor_id=#{email}

# Create new CSV
csv = StringIO.new

CSV::Writer.generate(csv, ,) do |line|
line << ["Example 1", "Example 2"]
end

csv.rewind

# Send request
gdata_request(url, :post,
{ Content-Type => text/csv,
Slug => test.csv,
GData-Version => 3.0 },
csv.read)

end

Now, this is all you need to get started with the Google Data API’s. Be sure to check out the Google Apps Marketplace Developer overview for more information and to see which API’s you could use and how to use these. I would advise to check out the OAuth Playground if you have any problems with authorization. Using the playground with two-legged OAuth is very easy. Just follow these steps:
  1. Set the signature method to HMAC-SHA1
  2. Type in your consumer key and consumer secret (these can be found in your Vendor Profile)
  3. Set your Feed URL (step 6)
  4. Set GData-version to 3.0 unless the API only supports 2.0
  5. Click execute
Since the OAuth playground traffic isn’t over SSL, I’d only recommend using it with the consumer key and secret for a test application installed on test domains.

Thank you for reading this tutorial. I know this isn’t the best approach on using two-legged OAuth but it will give you some insight. The best way would be to build in two-legged OAuth support in the Google Data APIs Ruby Utility Library. I haven’t done that yet but am planning to look into that soon. If you have any questions or comments, I would love to hear from you. You can email me at vincent@floorplanner.com.

One last note: These code snippets are just examples of how to use the Google Apps Marketplace with Rails. I would advise you not to use these examples in a production environment.

Want to weigh in on this topic? Discuss on Buzz

Read more »

Thursday, February 12, 2015

Improvements Expected in Google Nexus 6 after Reviewing Nexus 5

Improvements Expected in Google Nexus 6 after Reviewing Nexus 5

Nexus 5 is the flagship phone of Google that was released this October and created a quite a buzz in the tech world with its irresistibly advanced specifications. However, since the inception of civilization the Darwinian philosophy of ‘survival of the fittest’ has ruled the thoughts of the human beings and it continues to do so even today. Human beings always want to improvise and modify everything surrounding them so that they can lead a better life. This basic human drive has also led the tech geeks to consider the improvisation that they expect to see in Nexus 6 within a month of the release of Nexus 5.

Also Read: iPhone 6 (Rumors) Vs Nexus 5
Also Read: 4 Best Tips to Clean Your Touch Screen Device

Advanced processor with greater RAM support, bigger storage capacity, enhanced screen resolution and better camera are some of the standard facets which are improved with the launch of the next generation phones. However, there are also some other very basic aspects on which the developers must pay attention to. Here are some of those basic aspects where we expect improvements when Google Nexus 6 will be released.

Battery
The batteries of smartphones drain out rapidly, especially if the users are avid apps users. So just in case we miss charging our phone for a day, we are going to face the music the next day. This is true for all smartphones, and though some improvements have been made in this genre but we are yet to see a smartphone with 3 – 4 days of battery backup. Therefore, Nexus 6 can give a feat to all other smartphones by developing a battery that suits with the diverse use of the phone.

Water-resistant 
Approximately half or at least one fourth of the smartphone users have lost their beloved phones due to liquid damage. Google Nexus 6 can come up with a technology whereby its next flagship gadget will be 100% resistant to water and thereby providing the potential customers with more than enough reasons to invest on this smartphone. 

Also Read: The Top 10 Best iPhone Apps of 2013
Also Read: How You Can Keep Your Android Phone Safe From Hackers?

Dust- resistant 
Since the smartphones are very fragile, inclusion of technology that resist dust from damaging the smartphone is also a necessity. It will safeguard the phone from climatic damages like moisture and dust.

Solar Charging Unit 
The developers can provide Google Nexus 6 with a battery that can be charged using solar energy along with the mainstream method charging it. This will be a great backup option in case of urgent need.

These are some of the areas where we expect some improvisations when the next flagship phone of Google will be launched in the upcoming year.


About Author:
Abhilash Thakur, A tech buff with a passion for writing. Although loves to write on Nexus 6 and devices run on Android, doesnt miss relevant news on other industry players.

Image Source: http://forum.xda-developers.com/google-nexus-5
Read more »

Wednesday, February 11, 2015

Google Gravity How to Hack Google Homepage Funny Trick

Google Gravity: How to Hack Google Homepage (Funny Trick)

Have you ever thought about hacking Google? In practical this is not possible. Do you hate Google or you are get bored of Google? If yes then here is the solution for it. Now you have a chance to play with Google homepage. A programmer named Mr Doob who coded a script named Google Gravity. It allows every components on Google homepage to fall down and you can move them freely using mouse.


Also Read: The 5 biggest tech myths prevailing among common man

Also Read: The Top 10 Best iPhone Apps of 2013

Funny Trick to Hack Google Homepage

1. First of all go to the link https://www.google.com/
2. Type Google Gravity in the search box and click on I’m Feeling Lucky button. Make sure that Google Instant is off.
3. Or go to the link mrdoob.com/projects/chromeexperiments/google_gravity/
4. Now Google homepage will open where all components start falling down to the bottom of the browser. You can easily move components like images, text, search box wherever you want using your mouse pointer.

Just watch the below video to know how this works.



Note: Remember that this trick works only in google chrome and works partially in firefox.This trick is not working with Internet Explorer.
Read more »

Monday, February 2, 2015

How to Download Google Apps



Google Apps


Asalam-o-Alaikum Friends!!!

Umeed Kerta hou ap sub Khairyet se honge, toh Dosto aj mai ap ko btao ga k ap apne PC se "Google Play" se ap Software kase Download karskte hain.

Screen Shot Follow kare or sub se Phle "Google Play" open kare.



 
 

 
 
 

 
 
 
 
 
 
 
 
 

Read more »