当前位置: 首页 > 知识库问答 >
问题:

如何使用WWWAPI获取oauth2令牌?

秦博达
2023-03-14

我正在从事一个需要oauth2令牌才能进行通信的项目。后端给了我一个curl命令,但我不知道如何在Unity中将其转换为WWW格式,因为我以前没有使用http或json文件的经验。你能帮我取一下代币吗?谢谢下面是curl代码的样子:

$curl-v-u{CLIENT_ID}:{CLIENT_SECRET}”https://api.domo.com/oauth/token?grant_type=client_credentials

下面是一个例子:

$curl-v-u 441e307a-b2a1-4a99-8561-174e5b153fsa:F103FC453D08BDH049EDC9A1913E3F5266447A06D1D2751258C89771BCC8087“https://api.domo.com/oauth/token?grant_type=client_credentials

非常感谢你!

共有2个答案

卞昀
2023-03-14

我使用以下方法实现了它:参考特拉维斯的fitbit代码

var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(_clientID + ":" + _consumerSecret);  
var encoded = Convert.ToBase64String(plainTextBytes);  
var form = new WWWForm();  
form.AddField("client_id", _clientID);  
form.AddField("grant_type", "authorization_code");  
form.AddField("redirect_uri", WWW.UnEscapeURL(CallBackUrl));  
form.AddField("code", _returnCode);  
var headers = form.headers;  
headers["Authorization"] = "Basic " + encoded;  
_wwwRequest = new WWW("https://api.fitbit.com/oauth2/token", form.data, headers);  

关联到你的后端,看看他们使用的是什么样的oaut2,你可以在这里看到oaut2留档。请随时留下评论。

冯福
2023-03-14

要使用WWWAPI获取oAuth2令牌,请使用WWWForm创建包含grant_typeclient_idclient_secret的表单。当您发出请求时,令牌应该以Json格式返回。使用Unity的JsonUuel将其转换为您可以轻松获取的字符串。

检索令牌:

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

IEnumerator GetAccessToken()
{
    var url = "http://yoururl.com";
    var form = new WWWForm();
    form.AddField("grant_type", "client_credentials");
    form.AddField("client_id", "login-secret");
    form.AddField("client_secret", "secretpassword");

    WWW www = new WWW(url, form);

    //wait for request to complete
    yield return www;

    //and check for errors
    if (String.IsNullOrEmpty(www.error))
    {
        string resultContent = www.text;
        UnityEngine.Debug.Log(resultContent);
        TokenClassName json = JsonUtility.FromJson<TokenClassName>(resultContent);
        UnityEngine.Debug.Log("Token: " + json.access_token);
    }
    else
    {
        //something wrong!
        UnityEngine.Debug.Log("WWW Error: " + www.error);
    }
}

使用令牌:

收到令牌后,它将存储在json中。访问令牌变量。然后,您可以将其添加到其他WWW请求的标题中,从而使用它发出请求。该标题存储在字典中,如下所示:

headers.Add("Authorization", "Bearer " + token);

下面是使用收到的令牌发出请求的完整示例

IEnumerator makeRequestWithToken(string token)
{
    var url = "http://yoururl.com";

    Dictionary<string, string> headers = new Dictionary<string, string>();
    headers.Add("Authorization", "Bearer " + token);

    WWWForm formData = new WWWForm();
    formData.AddField("YourField", "YourVal");
    formData.AddField("YourField", "YourVal");

    WWW www = new WWW(url, formData.data, headers);
    yield return www;

    //and check for errors
    if (String.IsNullOrEmpty(www.error))
    {
        string resultContent = www.text;
        UnityEngine.Debug.Log(resultContent);
    }
    else
    {
        //something wrong!
        UnityEngine.Debug.Log("WWW Error: " + www.error);
    }
}

Unity现在使用UnityWebRequest。如果可能的话,开始使用它。下面是一个使用UnityWebRequest检索oauth2的示例。

请注意,这两个函数都是协程函数,必须使用startcroutine函数启动,比如startcroutine(GetAccessToken()) 启动例程(makeRequestWithToken(“YourToken”)

 类似资料:
  • 我正在尝试使用Web服务。我需要获取令牌并在授权标头中发送此令牌,我正在获取令牌,但在服务器中存在问题,因为令牌是v1并且他们正在使用v2。 这是我用来获取代码的网址 https://login.microsoftonline.com/tenant/oauth2/v2.0/authorize?response_type=code 这是获取令牌的url https://login.microsoft

  • 为了能够在令牌过期后访问该用户的数据,我还需要存储刷新令牌。我知道如何在使用服务器端Google OAuth2库(指定access_type=offline)时做到这一点,但我需要能够使用客户端Javascript库来做到这一点,但它不起作用。

  • 下面是security.xml文件,我正在使用它合并spring-security-oauth2。 我必须在spring-security.xml文件中做哪些更改,以便在JSON中发送查询参数?

  • 如何在android中使用webView获取oAuth2令牌?我知道如何创建一个webview并打开url以获取oAuth2令牌,但我不知道如何在获取后从webview切换回应用程序,并将oAuth2token复制到变量中,有人知道如何做到这一点或知道一个好的tut吗?p、 s.我正在尝试获取oAuth2令牌以访问google api

  • 我想使用上传一个pdf文件到Google Drive,用于自动测试目的。 我已经在Google云平台上创建了一个帐户(获得了客户端ID和机密),并启用了Google Drive API。 谢了。

  • 我们希望使用SpringOAuth2JWT令牌支持。我们的架构如下:Spring只提供了一个REST接口,前端由AngularJS构建,AngularJS查询Spring REST接口。出于授权目的,我们的前端团队希望使用JWT。因此,我查看了SpringOAuth2JWT支持,但仍然不知道如何与前端讨论JWT令牌。在阅读了一些教程后,我实现了以下内容: 我不确定工作流程如何。我猜:前端访问/oa