我正在开发一个需要oauth2令牌进行通信的项目。后端给了我一个curl命令,但我不知道如何将它放入Unity中的WWW表单,因为我以前没有使用http或json文件的经验。你能帮我看一下令牌吗?谢谢。这里卷曲代码如何:
$ curl -v -u {CLIENT_ID}:{CLIENT_SECRET}“ALTREP
{SCOPE}”
这是一个例子:
$ curl -v -u 441e307a-b2a1-4a99-8561-174e5b153fsa:f103fc453d08bdh049edc9a1913e3f5266447a06d1d2751258c89771fbcc8087“https://api.domo.com/oauth/token?grant_type=client_credentials&scope=”
非常感谢你!
答案 0 :(得分:0)
要使用WWW
API获取oauth2令牌,请使用WWWForm
创建包含grant_type
,client_id
和client_secret
的表单。发出请求时,应以Json格式返回令牌。使用Unity的JsonUtility
将其转换为您可以轻松获得的字符串。
检索令牌:
[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.access_token
变量中。您可以使用它来通过将其添加到其他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
。如果可能的话开始使用它。 Here是使用UnityWebRequest
检索oauth2的示例。
请注意,这两个函数都是协程函数,必须使用StartCoroutine
和StartCoroutine(GetAccessToken());
等StartCoroutine(makeRequestWithToken("YourToken"));
函数启动。
答案 1 :(得分:0)
我使用以下方法工作: 请参阅Travis's fitbit code
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);
与你的后端相关,看看他们使用的是哪种oauth2,你可以看到oauth2文档Here。随意发表评论。