UnityでのOAuth2認証と操作

イストヴァン

UnityでWindowsMo​​bileアプリケーションのOAuth2認証といくつかの操作を実装する必要があります。コンソールアプリケーションとして機能させることができましたが(.NET 4.0以降を使用)、Unityは.NET 3.5までしかサポートしていないため、コードをコピーするだけでは機能しませんでした。Unityで動作させる方法はありますか?これが私の認証コードです:

private static async Task<string> GetAccessToken()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://someurl.com");
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("grant_type", "client_credentials"),
                new KeyValuePair<string, string>("client_id", "login-secret"),
                new KeyValuePair<string, string>("client_secret", "secretpassword")
            });
            var result = await client.PostAsync("/oauth/token", content);
            string resultContent = await result.Content.ReadAsStringAsync();
            var json = JObject.Parse(resultContent);
            return json["access_token"].ToString();
        }
    }

そしてこれは私のOAuth2関数の1つです:

private static async Task<string> GetMeasurements(string id, DateTime from, DateTime to)
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://someurl.com");
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("MeasurePoints", id),
                new KeyValuePair<string, string>("Sampling", "Auto"),
                new KeyValuePair<string, string>("From", from.ToString("yyyy-MM-ddTHH:mm:ssZ")),
                new KeyValuePair<string, string>("To", to.ToString("yyyy-MM-ddTHH:mm:ssZ"))
            });
            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + GetAccessToken().Result);
            var result = await client.PostAsync("/api/v2/Measurements", content);
            string resultContent = await result.Content.ReadAsStringAsync();
            var rootArray = JArray.Parse(resultContent);
            string measurements = "";
            foreach (JObject item in rootArray)
            {
                measurements = item.GetValue("Measurements").ToString();
            }

            return measurements;
        }
    }

何か提案があれば、永遠に感謝します。ありがとう!

プログラマー

古い.NETバージョンに変換するのはそれほど難しくありません。UnityWWWまたはUnityWebRequestAPIを使用できます。それらのいずれかがそれを行う必要があります。

1 .ReplaceHttpClientUnityWebRequest

2 .ReplaceKeyValuePairと、Dictionary

3 .ReplaceDefaultRequestHeadersSetRequestHeader

4 .Replaceclient.PostAsyncUnityWebRequest.Send

5 .FOR JSON、使用団結のJsonUtility

6.GetMeasurements関数内のJson配列については、JsonHelperこの投稿のクラスを使用してください

それでおしまい。簡単な移植ができました。テストしませんでしたが、コンパイルできたので、始めることができます。

GetAccessToken機能

[Serializable]
public class TokenClassName
{
    public string access_token;
}

private static IEnumerator GetAccessToken(Action<string> result)
{
    Dictionary<string, string> content = new Dictionary<string, string>();
    //Fill key and value
    content.Add("grant_type", "client_credentials");
    content.Add("client_id", "login-secret");
    content.Add("client_secret", "secretpassword");

    UnityWebRequest www = UnityWebRequest.Post("https://someurl.com//oauth/token", content);
    //Send request
    yield return www.Send();

    if (!www.isError)
    {
        string resultContent = www.downloadHandler.text;
        TokenClassName json = JsonUtility.FromJson<TokenClassName>(resultContent);

        //Return result
        result(json.access_token);
    }
    else
    {
        //Return null
        result("");
    }
}

GetMeasurements機能

[Serializable]
public class MeasurementClassName
{
    public string Measurements;
}

private static IEnumerator GetMeasurements(string id, DateTime from, DateTime to, Action<string> result)
{
    Dictionary<string, string> content = new Dictionary<string, string>();
    //Fill key and value
    content.Add("MeasurePoints", id);
    content.Add("Sampling", "Auto");
    content.Add("From", from.ToString("yyyy-MM-ddTHH:mm:ssZ"));
    content.Add("To", to.ToString("yyyy-MM-ddTHH:mm:ssZ"));
    content.Add("client_secret", "secretpassword");

    UnityWebRequest www = UnityWebRequest.Post("https://someurl.com/api/v2/Measurements", content);

    string token = null;

    yield return GetAccessToken((tokenResult) => { token = tokenResult; });

    www.SetRequestHeader("Authorization", "Bearer " + token);
    www.Send();

    if (!www.isError)
    {
        string resultContent = www.downloadHandler.text;
        MeasurementClassName[] rootArray = JsonHelper.FromJson<MeasurementClassName>(resultContent);

        string measurements = "";
        foreach (MeasurementClassName item in rootArray)
        {
            measurements = item.Measurements;
        }

        //Return result
        result(measurements);
    }
    else
    {
        //Return null
        result("");
    }
}

使用法

string id = "";
DateTime from = new DateTime();
DateTime to = new DateTime();

StartCoroutine(GetMeasurements(id, from, to, (measurementResult) =>
{
    string measurement = measurementResult;

    //Do something with measurement
    UnityEngine.Debug.Log(measurement);

}));

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

API認証とOAuth2の使用

分類Dev

PythonでのAPIのOAuth2認証

分類Dev

admin-on-rest での認証と OAuth2 の実装

分類Dev

OAuth2での認証コードと暗黙の付与タイプの混合

分類Dev

APIのOAuth2認証/承認

分類Dev

GolangでのOauth2認証情報の保存

分類Dev

Javaでの認証の問題Oauth2

分類Dev

OAuth2を使用したOffice365でのIMAP認証

分類Dev

認証用のOAuth2ではありませんか?

分類Dev

iOSでのOAuth2による認証

分類Dev

Xero oAuth2認証

分類Dev

パッケージ「golang.org/x/oauth2」を使用したoauth2での認証

分類Dev

OAuth2プロバイダー/認証サーバーとしてのADFSは可能ですか?

分類Dev

Microsoft AD OAuth2認証で「学校」と「職場」のアカウントを区別する方法

分類Dev

OAuth2認証呼び出しとリダイレクト呼び出しの間で値を渡す

分類Dev

Azure API管理-認証:OAuth2と証明書

分類Dev

oAuth2とFOSOAuthServerBundleで認証ページをスキップする

分類Dev

RESTAPIを使用してOAuth2とReactNativeで認証を行う方法は?

分類Dev

OAuth2-ユーザーの操作なしで認証

分類Dev

空の認証局でのSpring OAuth2ログインの成功

分類Dev

同じリソースへのSpring Security OAuth2とLdap認証

分類Dev

Spring Security OAuth2のauth_code付与で匿名認証は可能ですか?

分類Dev

ブラウザなしでOAuth2を使用したGoogleでの認証

分類Dev

ApigilityのMongoでOAuth2認証を有効にできませんか?

分類Dev

ApigilityのMongoでOAuth2認証を有効にできませんか?

分類Dev

iOSでNSURLSessionsを使用したサーバーAPIのoAuth2認証

分類Dev

RESTfulサービスでのカスタム手動Oauth2認証

分類Dev

OAuth2:JWT認証付与とJWTクライアント認証を使用したクライアント資格情報付与の違いは何ですか?

分類Dev

Spring Boot + Angularで外部OAuth2認証を処理する方法

Related 関連記事

  1. 1

    API認証とOAuth2の使用

  2. 2

    PythonでのAPIのOAuth2認証

  3. 3

    admin-on-rest での認証と OAuth2 の実装

  4. 4

    OAuth2での認証コードと暗黙の付与タイプの混合

  5. 5

    APIのOAuth2認証/承認

  6. 6

    GolangでのOauth2認証情報の保存

  7. 7

    Javaでの認証の問題Oauth2

  8. 8

    OAuth2を使用したOffice365でのIMAP認証

  9. 9

    認証用のOAuth2ではありませんか?

  10. 10

    iOSでのOAuth2による認証

  11. 11

    Xero oAuth2認証

  12. 12

    パッケージ「golang.org/x/oauth2」を使用したoauth2での認証

  13. 13

    OAuth2プロバイダー/認証サーバーとしてのADFSは可能ですか?

  14. 14

    Microsoft AD OAuth2認証で「学校」と「職場」のアカウントを区別する方法

  15. 15

    OAuth2認証呼び出しとリダイレクト呼び出しの間で値を渡す

  16. 16

    Azure API管理-認証:OAuth2と証明書

  17. 17

    oAuth2とFOSOAuthServerBundleで認証ページをスキップする

  18. 18

    RESTAPIを使用してOAuth2とReactNativeで認証を行う方法は?

  19. 19

    OAuth2-ユーザーの操作なしで認証

  20. 20

    空の認証局でのSpring OAuth2ログインの成功

  21. 21

    同じリソースへのSpring Security OAuth2とLdap認証

  22. 22

    Spring Security OAuth2のauth_code付与で匿名認証は可能ですか?

  23. 23

    ブラウザなしでOAuth2を使用したGoogleでの認証

  24. 24

    ApigilityのMongoでOAuth2認証を有効にできませんか?

  25. 25

    ApigilityのMongoでOAuth2認証を有効にできませんか?

  26. 26

    iOSでNSURLSessionsを使用したサーバーAPIのoAuth2認証

  27. 27

    RESTfulサービスでのカスタム手動Oauth2認証

  28. 28

    OAuth2:JWT認証付与とJWTクライアント認証を使用したクライアント資格情報付与の違いは何ですか?

  29. 29

    Spring Boot + Angularで外部OAuth2認証を処理する方法

ホットタグ

アーカイブ