エンドポイントv2(昨日v1から移行)を使用してWebアプリケーションにfirebase認証を追加する方法については、thisのチュートリアルに従っています。JavaScriptからAPIを呼び出すフロントエンド:401の不正使用angerfire
以前はGoogleアカウント認証のみでしたが、追加するためにfirebaseに切り替える必要があります。フェイスブック。
JavaScript Frontend(angularJS & anglefireで作成)からAPIを呼び出すと、401が不正になります。
は、私は論理的なステップをしないのです、感じる:
私はログインすることができ、クライアント側(ポップアップが開き、私のFacebookの名が表示されます)に。
ステップがありませんか?
endpoints.get_current_user()はユーザーを取得しません。
どこが間違っていますか?
これは私がバックエンドからプロファイルを取得したいページを初期化したいものです。
`/**
* Initialize profile page.
* Update the profile if the user's profile has been stored.
*/
$scope.init = function() {
var retrieveProfileCallback = function() {
$scope.profile = {};
$scope.loading = true;
gapi.client.myapi.getProfile().execute(function (resp) {
$scope.$apply(function() {
$scope.loading = false;
if (resp.error) {
// Failed to get a user profile.
} else {
// Succeeded to get the user profile.
$scope.profile.displayName = resp.result.displayName;
$scope.profile.someOtherProperty = resp.result.someOtherProperty;
$scope.initialProfile = resp.result;
}
});
}
);
};
if (!firebaseUser) {
//TODO
} else {
retrieveProfileCallback();
}
};`
これはultimativelyはGetProfile(から呼び出されるメソッドの開始である) - エンドポイント:
ここでdef _getProfileFromUser(self):
"""Return user Profile from datastore, creating new one if non-existent."""
## Make sure user is authed
user = endpoints.get_current_user()
if not user:
raise endpoints.UnauthorizedException('Authorization required')
私のAPIデコレータは(openapi.jsonが展開されている)である。
# - - - - firebase - - - - - - - - - - - - - - - - - -
firebase_issuer = endpoints.Issuer(
issuer='https://securetoken.google.com/appname-123456',
jwks_uri='https://www.googleapis.com/service_accounts/v1/metadata/x509/[email protected]')
# - - - - Endpoints API - - - - - - - - - - - - - - - - - - -
@endpoints.api(name='myapi',
version='v1',
scopes=[EMAIL_SCOPE],
issuers={'firebase': firebase_issuer})
class MyApi(remote.Service):
チュートリアルを大量に誤解しているような気がします。それは簡単すぎると思われ、うまくいかない。 など。 Googleは私がindex.htmlの中にそうようなのOAuth2 APIを初期化し、認可アカウント用:
`<script>
function init() {
gapi.client.load('myapi', 'v1', null, '//' + window.location.host + '/_ah/api');
gapi.client.load('oauth2', 'v2', function() {
angular.bootstrap(document, ['conferenceApp']);
});
};
</script>`
を私はfirebaseにswitichingいます考え出したので、私はそれを取り出しました。 このように:
`<script>
/**
* Initializes the Google API JavaScript client. Bootstrap the angular module after loading the Google libraries
* so that Google JavaScript library ready in the angular modules.
*/
function init() {
gapi.client.load('myapi', 'v1', null, '//' + window.location.host + '/_ah/api', function() {
angular.bootstrap(document, ['myApp']);
});
};
</script>`