Codeフローのサンプルコードの説明をします。JAPANのシステムは「TLS1.0」および「TLS1.1」のサポートを終了するため、TLS1.2未対応のブラウザーではログインができなくなります。Developpersの手順に従って、アプリでセキュリティプロバイダのアップデートを実装してください。SDKを任意の場所にダウンロードして解凍してください。ID連携を利用するために必要なクラスが定義されています。インポートしてご利用ください。jp.co.yahoo.yconnectjp.co.yahoo.yconnect.coreManifest.xmlの設定はじめにManifext.xmlにパーミッションとintent-filterを設定します。アプリケーションでネットワークソケットのパーミッションを設定します。android:name="android.permission.INTERNET"›‹/uses-permission›...次にコールバックURLを処理するためのintent-filterを設定します。‹/activity›...今回はひとつのActivityでブラウザーの起動とコールバックURLの受け取りをするのでsingleTaskにしています。android:launchMode="singleTask"Activityを起動するためのschemeを指定します。このschemeはアプリケーションID登録時に発行されるカスタムURIスキーム「yj-xxxxx」を指定してください。Codeフローで必要なメソッドがすべて実装されています。YConnectExplicitクラスを使ってブラウザーを起動して同意画面を表示させます。シングルトンパターンのインスタンスを取得する。各パラメーターを設定する。ブラウザーを起動して同意画面を表示する。パソコン版のテンプレートを表示するための定数です。スマートフォン版のテンプレートを表示するための定数です。ユーザーの認証、認可のための定数です。同意画面非表示のための定数です。ユーザーの再認可のための定数です。ユーザーの再認証のための定数です。ユーザー識別子を取得するための定数です。姓名・生年・性別を取得するための定数です。メールアドレスと確認済みフラグを取得するための定数です。ユーザー登録住所情報を取得するための定数です。(ブラウザーを起動して同意画面を表示)yconnect.requestAuthorization(this);...実際の開発の際にはstate、nonceは固定の文字列ではなく独自の仕様でランダムな文字列を生成してデータベースなどに保存してください。stateはAuthorizationエンドポイントからのコールバックURL受け取り時に、nonceはIDトークンを復号時の検証に必要です。各パラメーター値の詳細についてはAuthorizationエンドポイントを参照してください。コールバックURLを受け取り、認可コードを抽出する同意後に返されるコールバックURLをActivityで受け取り、認可コードなどを抽出します。コールバックURLのフラグメントに付加されたパラメーターを抽出する。認可コードを取得する。...}...Tokenエンドポイントにリクエストしてアクセストークンを取得する取得した認可コードを用いてアクセストークンを取得します。Tokenエンドポイントにリクエストする。アクセストークンを取得する。アクセストークンの有効期限を取得する。リフレッシュトークンを取得する。IDトークンを取得する。非同期通信をするためメインスレッドとは別スレッドで実装する必要があります。今回は簡易的なスレッドとしてAsyncTaskを継承したサブクラスでリクエストします。yconnect.getIdToken();...CheckTokenエンドポイントにリクエストしてユーザー識別子を取得するオプションでレスポンスタイプにIDトークンを指定した場合、IDトークンの暗号化された文字列が返されます。この文字列をCheckTokenエンドポイントで復号し、ユーザー識別子やIDトークンの発行元などの情報を取得します。CheckTokenエンドポイントにリクエストする。復号されたIDトークンをオブジェクトとして取得する。非同期通信をするためメインスレッドとは別スレッドで実装する必要があります。今回は簡易的なスレッドとしてAsyncTaskを継承したサブクラスでリクエストします。yconnect.getIdTokenObject();...復号されたIDトークンはオブジェクト(JavaBeans形式)として返されます。各パラメーターはIDトークンオブジェクトのプロパティーに保持されているので、必要に応じてgetterで取り出して利用してください。APIにリクエストしてユーザー識別子を取得するアクセストークンを用いてユーザー識別子などを取得します。APIにリクエストする。UserInfoオブジェクトを取得する。非同期通信をするためメインスレッドとは別スレッドで実装する必要があります。今回は簡易的なスレッドとしてAsyncTaskを継承したサブクラスでリクエストします。yconnect.getUserInfoObject();...userInfoObjectはオブジェクト(JavaBeans形式)として返されます。各パラメーターはUserInfoオブジェクトのプロパティーに保持されているので、必要に応じてgetterで取り出して利用してください。アクセストークンを更新するリフレッシュトークンをつかって有効期限切れのアクセストークンを更新します。アクセストークンを更新する。yconnect.getAccessTokenExpiration();...}...アクセストークンなどの保存についてアクセストークン、IDトークン、UserInfo情報の保存は、悪意のある外部アプリケーションから盗みとられないように注意が必要です。取得したトークンやユーザー情報を保存する場合には、適宜暗号化や難読化し外部から読み取られないようにしてください。Androidアプリ(Implicitフロー・ブラウザー)Androidのブラウザーを使用したImplicitフローのサンプルコードの説明をします。JAPANのシステムは「TLS1.0」および「TLS1.1」のサポートを終了するため、TLS1.2未対応のブラウザーではログインができなくなります。Developpersの手順に従って、アプリでセキュリティプロバイダのアップデートを実装してください。SDKを任意の場所にダウンロードして解凍してください。ID連携を利用するために必要なクラスが定義されています。インポートしてご利用ください。jp.co.yahoo.yconnectjp.co.yahoo.yconnect.coreManifest.xmlの設定はじめにManifext.xmlにパーミッションとintent-filterを設定します。アプリケーションでネットワークソケットのパーミッションを設定します。android:name="android.permission.INTERNET"›‹/uses-permission›...次にコールバックURLを処理するためのintent-filterを設定します。‹/activity›...今回はひとつのActivityでブラウザーの起動とコールバックURLの受け取りをするのでsingleTaskにしています。android:launchMode="singleTask"Activityを起動するためのschemeを指定します。このschemeはアプリケーションID登録時に発行されるカスタムURIスキーム「yj-xxxxx」を指定してください。/›Authorizationエンドポイントにリクエストして同意画面を表示するYConnectImplictiクラスにはImplicitフローで必要なメソッドがすべて実装されています。YConnectImplicitクラスを使ってブラウザーを起動して同意画面を表示させます。シングルトンパターンのインスタンスを取得する。各パラメーターを設定する。ブラウザーを起動して同意画面を表示する。パソコン版のテンプレートを表示するための定数です。スマートフォン版のテンプレートを表示するための定数です。ユーザーの認証、認可のための定数です。同意画面非表示のための定数です。ユーザーの再認可のための定数です。ユーザーの再認証のための定数です。ユーザー識別子を取得するための定数です。姓名・生年・性別を取得するための定数です。メールアドレスと確認済みフラグを取得するための定数です。ユーザー登録住所情報を取得するための定数です。(ブラウザーを起動して同意画面を表示)yconnect.requestAuthorization(this);...実際の開発の際にはstate、nonceは固定の文字列ではなく独自の仕様でランダムな文字列を生成してデータベースなどに保存してください。stateはAuthorizationエンドポイントからのコールバックURL受け取り時に、nonceはIDトークンを復号時の検証に必要です。各パラメーター値の詳細についてはAuthorizationエンドポイントを参照してください。コールバックURLを受け取り、アクセストークンを抽出する同意後に返されるコールバックURLをActivityで受け取り、アクセストークンなどを抽出します。コールバックURLのフラグメントに付加されたパラメーターを抽出する。アクセストークンを取得する。アクセストークンの有効期限を取得する。IDトークンを取得する。...}...CheckTokenエンドポイントにリクエストしてユーザー識別子を取得するオプションでレスポンスタイプにIDトークンを指定した場合、IDトークンの暗号化された文字列が返されます。この文字列をCheckTokenエンドポイントで復号し、ユーザー識別子やIDトークンの発行元などの情報を取得します。CheckTokenエンドポイントにリクエストする。復号されたIDトークンをオブジェクトとして取得する。非同期通信をするためメインスレッドとは別スレッドで実装する必要があります。今回は簡易的なスレッドとしてAsyncTaskを継承したサブクラスでリクエストします。yconnect.getIdTokenObject();...復号されたIDトークンはオブジェクト(JavaBeans形式)として返されます。各パラメーターはIDトークンオブジェクトのプロパティーに保持されているので、必要に応じてgetterで取り出して利用してください。APIにリクエストしてユーザー識別子を取得するアクセストークンを用いてユーザー識別子などを取得します。APIにリクエストする。UserInfoオブジェクトを取得する。非同期通信をするためメインスレッドとは別スレッドで実装する必要があります。今回は簡易的なスレッドとしてAsyncTaskを継承したサブクラスでリクエストします。yconnect.getUserInfoObject();...userInfoObjectはオブジェクト(JavaBeans形式)として返されます。各パラメーターはUserInfoオブジェクトのプロパティーに保持されているので、必要に応じてgetterで取り出して利用してください。アクセストークンの有効期限が切れた場合は、再度AuthorizationエンドポイントにリクエストするImplicitフローでアクセストークンの有効期限が切れた場合は、もう一度Authorizationエンドポイントにリクエストして、同意の処理を行ってください。...}...アクセストークンなどの保存についてアクセストークン、IDトークン、UserInfo情報の保存は、悪意のある外部アプリケーションから盗みとられないように注意が必要です。取得したトークンやユーザー情報を保存する場合には、適宜暗号化や難読化し外部から読み取られないようにしてください。Androidアプリ(Implicitフロー・WebView)AndroidのWebViewを使用したImplicitフローのサンプルコードの説明をします。JAPANのシステムは「TLS1.0」および「TLS1.1」のサポートを終了するため、TLS1.2未対応のブラウザーではログインができなくなります。Developpersの手順に従って、アプリでセキュリティプロバイダのアップデートを実装してください。SDKを任意の場所にダウンロードして解凍してください。ID連携を利用するために必要なクラスが定義されています。インポートしてご利用ください。jp.co.yahoo.yconnectjp.co.yahoo.yconnect.coreManifest.xmlの設定はじめにManifext.xmlにパーミッションとintent-filterを設定します。アプリケーションでネットワークソケットのパーミッションを設定します。android:name="android.permission.INTERNET"›‹/uses-permission›...Authorizationエンドポイントにリクエストして同意画面を表示するYConnectImplictiクラスにはImplicitフローで必要なメソッドがすべて実装されています。YConnectImplicitクラスを使ってブラウザーを起動して同意画面を表示させます。シングルトンパターンのインスタンスを取得する。各パラメーターを設定する。リクエストURIを生成する。パソコン版のテンプレートを表示するための定数です。スマートフォン版のテンプレートを表示するための定数です。ユーザーの認証、認可のための定数です。同意画面非表示のための定数です。ユーザーの再認可のための定数です。ユーザーの再認証のための定数です。ユーザー識別子を取得するための定数です。姓名・生年・性別を取得するための定数です。メールアドレスと確認済みフラグを取得するための定数です。ユーザー登録住所情報を取得するための定数です。yconnect.generateAuthorizationUri();...実際の開発の際にはstate、nonceは固定の文字列ではなく独自の仕様でランダムな文字列を生成してデータベースなどに保存してください。stateはAuthorizationエンドポイントからのコールバックURL受け取り時に、nonceはIDトークンを復号時の検証に必要です。各パラメーター値の詳細についてはAuthorizationエンドポイントを参照してください。WebViewに生成したURIを設定して読み込みます。WebViewを起動(ブラウザーを起動して同意画面を表示)webView.loadUrl(authorizationUri.toString());...コールバックURLを受け取り、アクセストークンを抽出するWebView内でコールバックURLを抽出するための処理をImplicitWebViewクラスで実装します。ImplicitWebViewクラスはWebViewClientクラスを継承したサブクラスです。onPageStartedメソッドでコールバックURLを受け取り、アクセストークンなどを抽出します。コールバックURLのフラグメントに付加されたパラメーターを抽出する。アクセストークンを取得する。アクセストークンの有効期限を取得する。IDトークンを取得する。yconnect.getIdToken();...}...CheckTokenエンドポイントにリクエストしてユーザー識別子を取得するオプションでレスポンスタイプにIDトークンを指定した場合、IDトークンの暗号化された文字列が返されます。この文字列をCheckTokenエンドポイントで復号し、ユーザー識別子やIDトークンの発行元などの情報を取得します。CheckTokenエンドポイントにリクエストする。復号されたIDトークンをオブジェクトとして取得する。非同期通信をするためメインスレッドとは別スレッドで実装する必要があります。今回は簡易的なスレッドとしてAsyncTaskを継承したサブクラスでリクエストします。yconnect.getIdTokenObject();...復号されたIDトークンはオブジェクト(JavaBeans形式)として返されます。各パラメーターはIDトークンオブジェクトのプロパティーに保持されているので、必要に応じてgetterで取り出して利用してください。APIにリクエストしてユーザー識別子を取得するアクセストークンを用いてユーザー識別子などを取得します。APIにリクエストする。UserInfoオブジェクトを取得する。非同期通信をするためメインスレッドとは別スレッドで実装する必要があります。今回は簡易的なスレッドとしてAsyncTaskを継承したサブクラスでリクエストします。yconnect.getUserInfoObject();...userInfoObjectはオブジェクト(JavaBeans形式)として返されます。各パラメーターはUserInfoオブジェクトのプロパティーに保持されているので、必要に応じてgetterで取り出して利用してください。アクセストークンの有効期限が切れた場合は、再度AuthorizationエンドポイントにリクエストするImplicitフローでアクセストークンの有効期限が切れた場合は、もう一度Authorizationエンドポイントにリクエストして、同意の処理を行ってください。webView.loadUrl(authorizationUri.toString());}...アクセストークンなどの保存についてアクセストークン、IDトークン、UserInfo情報の保存は、悪意のある外部アプリケーションから盗みとられないように注意が必要です。取得したトークンやユーザー情報を保存する場合には、適宜暗号化や難読化し外部から読み取られないようにしてください。