views:

13

answers:

0

I'm having a lot of trouble getting started with creating a google apps marketplace application.

I've tried numerous demos, including the php hello world example you can download from google. In every case, the openid portion works fine, but oauth is failing.

I've tracked it down to the hybrid openid/oauth request not returning an oauth request token. You can see my verion of the hybrid standard demo from googlecodesamples here http://lookmumimontheinternet.com/staging/hybrid/index.php

You can see that i'm stopping the redirect and outputting the url in a link for debugging. I'm also outputting everything that comes back in the $_REQUEST object.

This is linked up to a market place app with the folowing manifest:

<?xml version="1.0" encoding="UTF-8" ?>
<ApplicationManifest xmlns="http://schemas.google.com/ApplicationManifest/2009"&gt;
  <!-- Metadata -->
  <Name>Hello World</Name>
  <Description>A simple application for demonstrating the marketplace</Description>
  <Support>
    <Link rel="support" href="http://www.lookmumimontheinternet.com/staging/hybrid/support.php" />
  </Support>

  <!-- Navigation link -->
  <Extension id="navlink" type="link">
    <Name>Hello World</Name>
    <Url>http://www.lookmumimontheinternet.com/staging/hybrid/index.php?from=google&amp;amp;domain=${DOMAIN_NAME}&lt;/Url&gt;
    <Scope ref="calendarFeed"/>
  </Extension>

  <!-- Single Sign On with OpenID -->
  <Extension id="realm" type="openIdRealm">
    <Url>http://lookmumimontheinternet.com/staging/hybrid&lt;/Url&gt;
  </Extension>

  <!-- Authorized Data access -->
  <Scope id="calendarFeed">
    <Url>https://www.google.com/calendar/feeds/&lt;/Url&gt;
    <Reason>This app displays your next upcoming calendar appointment..</Reason>
  </Scope>
</ApplicationManifest>

here is the php configuration of my installation of the demo (I know I shouldn't post the secret but it's only a test app):

$CONSUMER_KEY = '995079586589.apps.googleusercontent.com';
$CONSUMER_SECRET = '6yTp+2Xz7nSqB4Yx6OdSds7n';

$openid_params = array(
  'openid.ns'                => 'http://specs.openid.net/auth/2.0',
  'openid.claimed_id'        => 'http://specs.openid.net/auth/2.0/identifier_select',
  'openid.identity'          => 'http://specs.openid.net/auth/2.0/identifier_select',
  'openid.return_to'         => "http://lookmumimontheinternet.com/staging/hybrid/index.php",
  'openid.realm'             => "http://lookmumimontheinternet.com/staging/hybrid",
  'openid.mode'              => @$_REQUEST['openid_mode'],
  'openid.ns.ui'             => 'http://specs.openid.net/extensions/ui/1.0',
  'openid.ns.ext1'           => 'http://openid.net/srv/ax/1.0',
  'openid.ext1.mode'         => 'fetch_request',
  'openid.ext1.type.email'   => 'http://axschema.org/contact/email',
  'openid.ext1.type.first'   => 'http://axschema.org/namePerson/first',
  'openid.ext1.type.last'    => 'http://axschema.org/namePerson/last',
  'openid.ext1.type.country' => 'http://axschema.org/contact/country/home',
  'openid.ext1.type.lang'    => 'http://axschema.org/pref/language',
  'openid.ext1.required'     => 'email,first,last,country,lang',
  'openid.ns.oauth'          => 'http://specs.openid.net/extensions/oauth/1.0',
  'openid.oauth.consumer'    => $CONSUMER_KEY,
  'openid.oauth.scope'       => implode(' ', $scopes)
);

$openid_ext = array(
  'openid.ns.ext1'           => 'http://openid.net/srv/ax/1.0',
  'openid.ext1.mode'         => 'fetch_request',
  'openid.ext1.type.email'   => 'http://axschema.org/contact/email',
  'openid.ext1.type.first'   => 'http://axschema.org/namePerson/first',
  'openid.ext1.type.last'    => 'http://axschema.org/namePerson/last',
  'openid.ext1.type.country' => 'http://axschema.org/contact/country/home',
  'openid.ext1.type.lang'    => 'http://axschema.org/pref/language',
  'openid.ext1.required'     => 'email,first,last,country,lang',
  'openid.ns.oauth'          => 'http://specs.openid.net/extensions/oauth/1.0',
  'openid.oauth.consumer'    => $CONSUMER_KEY,
  'openid.oauth.scope'       => implode(' ', $scopes),
  'openid.ui.icon'           => 'true'
);

You can see when you run the demo that no oauth token is being returned even though it is being requested (correctly as far as i can see). Can anybody see what i'm doing wrong here?