1

GoogleAppsMarketplaceアプリケーションの作成を開始するのに多くの問題があります。

グーグルからダウンロードできるphphelloworldの例を含め、数多くのデモを試しました。いずれの場合も、openid部分は正常に機能しますが、oauthは失敗します。

私はそれを、oauthリクエストトークンを返さないハイブリッドopenid/oauthリクエストまで追跡しました。ハイブリッド標準デモの私のバージョンは、こちらのgooglecodesamplesから見ることができますhttp://lookmumimontheinternet.com/staging/hybrid/index.php

リダイレクトを停止し、デバッグ用のリンクにURLを出力していることがわかります。$_REQUESTオブジェクトに返されるすべてのものも出力しています。

これは、次のマニフェストを持つマーケットプレイスアプリにリンクされています。

<?xml version="1.0" encoding="UTF-8" ?>
<ApplicationManifest xmlns="http://schemas.google.com/ApplicationManifest/2009">
  <!-- 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;domain=${DOMAIN_NAME}</Url>
    <Scope ref="calendarFeed"/>
  </Extension>

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

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

これがデモのインストールのphp構成です(秘密を投稿するべきではないことはわかっていますが、これはテストアプリにすぎません):

$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'
);

デモを実行すると、要求されているにもかかわらずoauthトークンが返されないことがわかります(私が見る限り、正しく)。誰かが私がここで間違っていることを見ることができますか?

4

1 に答える 1

1

OK、解決しました。アプリはインストール時に事前承認されているため、oauthアクセスを取得する必要はありません。あなたはすでにあなたのアプリキーでそれを持っています。

于 2011-04-05T05:46:19.787 に答える