2

YouTube V3 API を使用してビデオ ビュー カウント データを取得するコンソール アプリがあります。認証に Oauth 2 を使用していますが、問題があります。

異なる時間に 2 つの異なるサーバーでアプリケーションを実行しました。

1 台のマシンが正常に認証され、ログから次のメッセージが返されます。

2013-05-08 09:51:45,691 [8] INFO  DotNetOpenAuth.Messaging.Channel - Prepared outgoing AccessTokenRefreshRequest (2.0) message for https://accounts.google.com/o/oauth2/token: 
refresh_token: 1/m4PJx978kbEGkQTf6tvSJdFCzej1Na6NBTakhhHQKjs
grant_type: refresh_token
client_id: 1085346326111.apps.googleusercontent.com
client_secret: HHH5WFqTRdXMl54rNZaUghNa

もう一方は正常に認証されず、ユーザーに代わって YouTube Data API リクエストを送信する許可を待っていると想定しています。

2013-05-08 09:44:59,442 [31] INFO DotNetOpenAuth.Messaging.Channel - https://accounts.google.com/o/oauth2/authの発信 EndUserAuthorizationRequest (2.0) メッセージを準備しました: response_type: コード client_id: 1085346326111 .apps.googleusercontent.com redirect_uri: サーバー ローカル ホスト パス スコープ: https://www.googleapis.com/auth/youtube.readonly

両方のサーバーが同じコード、同じ clientID、および同じ秘密鍵を使用しているという事実に基づいて、アプリが 1 つのサーバーで認証できない理由を誰か説明してもらえますか?

ここに私のコードのスニペットがあります:

プライベートボイド Oauth2Authenticate() {

        try
        {

            var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description)
                {
                    ClientIdentifier = ConfigurationManager.AppSettings["Client.Id"],
                    ClientSecret = ConfigurationManager.AppSettings["Client.Secret"]


                };

            var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);

            youtube = new YoutubeService(new BaseClientService.Initializer()
                {
                    Authenticator = auth
                });
        }
        catch (Exception e)
        {
            if (logger != null)
            logger.Error(string.Format("Error authenticating Aplication on YouTube authentiction server", e.Message), e);
        }

    }



    private static IAuthorizationState GetAuthorization(NativeApplicationClient client)
    {
        var storage = MethodBase.GetCurrentMethod().DeclaringType.ToString();

        var key = "storage_key";

        IAuthorizationState state = AuthorizationMgr.GetCachedRefreshToken(storage, key);
        if (state != null)
        {
            client.RefreshToken(state);
        }
        else
        {
            state = AuthorizationMgr.RequestNativeAuthorization(client, YoutubeService.Scopes.YoutubeReadonly.GetStringValue());
            AuthorizationMgr.SetCachedRefreshToken(storage, key, state);
        }

        return state;
    }
4

0 に答える 0