2012-03-03 16 views
1

私はdotnetOpenAuthを使用しています。私は、ユーザーのゲームに権限を要求したいと思います。dotnetOpenAuthでGmailに承認をリクエストしたい

openIdを先に使用する必要がありますか?

まともなtutorailが見つかりません。誰も助けることができますか?

このコードはうまくいっていません。とにかく、私は認証要求でGmailの範囲を求めるように見えるしていないので、私は

public void PrepareAuthorizationRequest(Uri authCallbakUrl) 
{ 
    var consumer = new WebConsumer(GoogleConsumerConsts.ServiceDescription, mConsumerTokenManager); 

    // request access 
    consumer.Channel.Send(consumer.PrepareRequestUserAuthorization(authCallbakUrl, null, null)); 

    throw new NoRedirectToAuthPageException(); 
} 

public ProcessAuthorizationRequestResponse ProcessAuthorizationRequest() 
{ 
    ProcessAuthorizationRequestResponse response; 
    // Process result from the service provider 
    var consumer = new WebConsumer(GoogleConsumerConsts.ServiceDescription, mConsumerTokenManager); 
    var accessTokenResponse = consumer.ProcessUserAuthorization(); 

    // If we didn't have an access token response, this wasn't called by the service provider 
    if (accessTokenResponse == null) 
     response = new ProcessAuthorizationRequestResponse 
         { 
          IsAuthorized = false 
         }; 
    else 
    { 
     // Extract the access token 
     string accessToken = accessTokenResponse.AccessToken; 
     response = new ProcessAuthorizationRequestResponse 
     { 
      IsAuthorized = true, 
      Token = accessToken, 
      Secret = mConsumerTokenManager.GetTokenSecret(accessToken) 
     }; 
    } 
    return response; 
} 

private string Test2() 
{ 
    // Process result from linked in 
    var google = new WebConsumer(GoogleConsumerConsts.ServiceDescription, mConsumerTokenManager); 
    // var accessToken = GetAccessTokenForUser(); 
    var accessToken = String.Empty; 

    // Retrieve the user's profile information 
    var endpoint = GoogleConsumerConsts.GetGmailFeedsEndpoint;// new MessageReceivingEndpoint("http://api.linkedin.com/v1/people/~", HttpDeliveryMethods.GetRequest); 
    var request = google.PrepareAuthorizedRequest(endpoint, accessToken); 
    var response = request.GetResponse(); 
    return (new StreamReader(response.GetResponseStream())).ReadToEnd(); 
} 

答えて

0

困惑しているいいえ、あなたは、あなただけのユーザーのGmailにアクセスしたい場合はOpenIDを使用する必要はありません。 OpenIDは、ユーザを認証するときのためのものです。 OAuthは、ユーザーのデータにアクセスするときに使用します。

Adding scopes to OAuth 1.0 authorization request with DotNetOpenAuthに記載されているように、許可リクエストにscopeパラメータを含める必要があります。

+0

openAuthを使用していない場合は、DBに何を保存すればいいですか?永続的かつユニークなrequestTokenですか? 2回目のユーザーのためのフローは何ですか? –

+0

要求トークンまたはアクセストークンは永続的ではありません。あなたが次回のユーザを識別できるようにしたい場合、OpenID *は(実際にGmailを読むためにOAuthに加えて)使用するのに適しています。この場合、 'openidrelyingpartywebforms/loginplusoauth.aspx'サンプルをチェックしてください。このサンプルでは、​​ユーザーをGoogle *と*でGmailのアドレス帳にアクセスできるようにデモしています。 –

+0

ユーザーは二重リダイレクトを引き起こしますか?一度は認証用に、もう一回は認証用に? –

関連する問題