2016-07-18 5 views
0

OAuthで実際にこれを実装しようとしたことはありません。私はGoogleとFacebookからアクセストークンとプロファイルデータを取得したいと思います。 Xamarin.Authを使用します。Google OAuthのた​​めのリダイレクトURL

Facebookでは問題はありません。私は "http://www.facebook.com/connect/login_success.html"をリダイレクトURLとして指定し、ログインした後は以前の活動に戻ります。

は、しかし、Googleと、それはのように滑らかではない - しかし私は従っ "Redirect_url_mismatch" A native application: application nameになるだろうサインインした後、URLホワイトリストをリダイレクトするためにこれを追加しました - Facebookのログイン成功ページへのいずれかが似て見つけることができなかった、どこかで「 https://www.googleapis.com/plus/v1/people/me」を使用する提案を見つけました私は "my.package.name:"を使用しなければなりません。また、私は、URLのホワイトリストをリダイレクトし、サインインしようとしましたが、今度はサインインした後、読み取りアクセス権を確認する必要がある"com.my.package:/?oauthparameterX = value1 ...."のような非常に短いエラーが表示され、再び権限画面にリダイレクトされます。ここで

は私の完全なOAuth2Authenticatorです:

var auth = new OAuth2Authenticator(
      clientId: SocialIds.GooglePlusId, 
      clientSecret: SocialIds.GooglePlusSecret, 
      scope: OAuthUrl.GoogleScope, 
      authorizeUrl: new Uri(OAuthUrl.GoogleAuthorize), 
      redirectUrl: new Uri("https://www.googleapis.com/plus/v1/people/me"), 
      accessTokenUrl: new Uri("https://accounts.google.com/o/oauth2/token"), 
      getUsernameAsync: null); 
      auth.AllowCancel = false; 

のURL:上記のコードでは

public static string GoogleAuthorize = "https://accounts.google.com/o/oauth2/auth"; 
public static string GoogleScope = "https://www.googleapis.com/auth/userinfo.email"; 
public static string GoogleRedirect = "https://www.googleapis.com/plus/v1/people/me"; 
public static string GoogleUserInfo = "https://www.googleapis.com/oauth2/v1/userinfo?access_token={0}"; 

答えて

1

、あなたは、GoogleのAPIの範囲を与えている代わりに、リダイレクトURIを与えていません。リダイレクトuriの目的は、承認後にgoogle apiから返信を受け取ることです。応答はコードでなければなりません。この応答コードは、access_token、refresh_token、id_tokenなどにアクセスするために使用されます。したがって、プロジェクト側でこのコードを受け取る必要があります。この目的のために、リダイレクトURIが使用されます。 あなたが許可リダイレクトURLを見つけることができます

enter image description here

、その後、あなたはページconatainsにリダイレクトされます、資格情報を追加し、プロジェクトを作成し、あなたのGoogleコンソールに移動します。 URLを指定し、新しいリダイレクトURLでコードを設定します。この後はすべてがうまくいくでしょう。

関連する問題