3

このGoogle API JavaScript サンプル コードを AngularJS アプリに変換する方法を考えています。本当にすっきりすると思いました。

フォローアップとして、Oauth 2.0 ではどのように機能しますか?

ありがとう。

angularjsシードアプリを使用してみましたが、次のように変更しました-

// controller.js

function SampleListCtrl ( $scope, $http ){
  $http.
  jsonp( 'https://apis.google.com/js/client.js?onload=JSON_CALLBACK' ).
  success( function () {
    alert( 'go go GO' );
    function makeRequest () {
    var request = gapi.client.urlshortener.url.get({
      'shortUrl': 'http://goo.gl/fbsS'
    });

   request.execute( function(response) {
       $scope.longUrl = response.longUrl;
     });
   }

    gapi.client.setApiKey( 'XXXX' );
    gapi.client.load( 'urlshortener', 'v1', makeRequest );

    $scope.samples = data.feed.entry;
  });
};

そしてindex.htmlで

<div ng-controller="SampleListCtrl">
    <h4>{{ longUrl }}</h4>
</div>

RE: Roy Truelove のヒント 起動中のエラー コールバックを追加してみました

error( function () {
  console.log( JSON.stringify( arguments ) );
});

何が戻ってくるのかわからなかったので、引数オブジェクトを調べたところ、コンソールの出力は-

{"1":0,"3":{"method":"JSONP","url":"https://apis.google.com/js/client.js?onload=JSON_CALLBACK"}}

コールバックが機能しなかったことを意味するアラートは発生しません。どうすればそれを機能させることができますか?より良いアプローチはありますか?

4

1 に答える 1

2

JSON をリクエストしていますが、JavaScript ライブラリをロードしていますよね?http サービスはそのために作られているとは思いません。Angular をブートストラップする前にスクリプトをロードするか、スクリプト ローダーを統合して動的にロードする必要があります。

とにかくAngular Seedテンプレートを使用している場合は、index.htmlのスクリプトにgoogle APIを追加するか、非同期ローダーを使用できます。

于 2012-10-23T20:37:30.077 に答える