2014-12-10 1 views
0

.NET 응용 프로그램을 호출하는 Chrome 확장 프로그램을 개발 중입니다. .NET 애플리케이션에서 Gmail API를 사용하여 기록 된 사용자의 전자 메일을 관리하고 읽습니다.ExchangeCodeForTokenAsync를 호출하기 위해 userId 매개 변수를 가져 오는 방법

Google이 제공 한 .NET API 예제를 따라했습니다 (here). 이 예에서,이 같은 선언 로컬 변수가있다 :

// Application logic should manage users authentication. 
    // This sample works with only one user. You can change 
    // it by retrieving data from the session. 
    private const string UserId = "user-id"; 

은 매개 변수로이 변수를 사용하는 많은 방법이있다 :

var oauthState = AuthWebUtility.ExtracRedirectFromState( flow.DataStore, UserId,...

var token = flow.ExchangeCodeForTokenAsync(UserId,...

var result = new AuthorizationCodeWebApp(flow, uri, uri).AuthorizeAsync(UserId,...

제 질문은 : 어떻게 UserId를 얻을 수 있습니까? 세션에서 가져와야할까요? 크롬 어딘가에서 가져와야 하나? 저장고?

답변

1

세션에서 사용자 ID를 가져올 수 있습니다. 동일한 내용의 경우 link입니다.

public override string GetUserId(Controller controller) 
    { 
      // In this sample we use the session to store the user identifiers. 
      // That's not the best practice, because you should have a logic to identify 
      // a user. You might want to use "OpenID Connect". 
     // You can read more about the protocol in the following link: 
     // https://developers.google.com/accounts/docs/OAuth2Login. 
     var user = controller.Session["user"]; 
     if (user == null) 
     { 
      user = Guid.NewGuid(); 
      controller.Session["user"] = user; 
     } 
     return user.ToString(); 

    } 

그러나 가장 좋은 방법은 인증에 Google+ sign in을 사용하는 것입니다. 사용자가 로그인하면 사용자를보다 잘 이해하는 데 사용할 수있는 API 요청을위한 OAuth 토큰을 받게됩니다. 궁금한 점이 있으면 알려주세요.

+0

죄송합니다. 해결 된 질문의 표시를 취소해야합니다. 'GetUserId' 메소드는 매번 다른 사용자를 얻기 때문에 작동하지 않습니다. Google+ 메소드로 시도하지만 코드에서 많은 변경을해야합니다. –

+0

게다가, 설명서가별로 유용하지 않습니다. 어떻게 전자 메일을 읽고 관리 할 수있는 권한을 설정할 수 있습니까? 어떻게 토큰을 서버에 전달할 수 있습니까? –

0

나는 또한 최근에 작업 중입니다.

당신이 첫 번째 구글로 리디렉션하여 올바른 범위에 포함되어 있는지 확인하십시오 :

https://www.googleapis.com/auth/userinfo.profile 
https://www.googleapis.com/auth/userinfo.email 

을 그리고 당신은 단지 난 그 뭔가

private const string UserId = "user-id"; 

처럼에 대한 문자열을 선언해야 이것이 올바른 해결책인지 확실하지 않은 경우, 내 프로젝트에서 작동합니다.

그냥 참고로 제공됩니다.

그런데 토큰이있는 서버를 연결하는 문제를 해결 했습니까?

감사합니다. 감사합니다. 감사합니다. 감사합니다.

+0

고유 한 사용자 ID를 사용하면 다중 사용자 응용 프로그램에서 작동하지 않습니다. 토큰 정보 : Google+ 메서드는 서버 측 응용 프로그램이 아닌 Javascript 응용 프로그램에서만 작동한다는 결론을 얻었습니다. 현재 클라이언트에서 수동으로 사용자를 가져오고 POST 메서드로 서버에 보냅니다. –