我无法通过C#控制台(桌面)应用程序调用Yahoo Gemini API来访问Yahoo Gemini广告。Oauth2 Yahoo Gemini API
下面是步骤我用:
- 创建于
https://developer.yahoo.com/apps/create/
安装的应用程序。这给了我{Client ID}
和{Client Secret}
。 https://api.login.yahoo.com/oauth2/request_auth?client_id={Client ID} &redirect_uri=oob&response_type=code&language=en-us
。这会将我带到我登录的yahoo登录屏幕。按“同意”按钮,下一个屏幕显示七字母授权码(例如nzbcns9)。我写下这个授权码。然后我用下面的代码,试图获得访问令牌:
class Program { static void Main(string[] args) { string clientId = {Client ID}; string secret = {Client Secret}; var request = WebRequest.Create(@"https://api.login.yahoo.com/oauth2/get_token"); request.Method = "POST"; SetBasicAuthHeader(request, clientId, secret); string postData = "grant_type=authorization_code&redirect_uri=oob&code=nzbcns9"; ASCIIEncoding encoding = new ASCIIEncoding(); byte[] byte1 = encoding.GetBytes(postData); request.ContentLength = byte1.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(byte1, 0, byte1.Length); dataStream.Close(); request.ContentType = "application/x-www-form-urlencoded"; var response = request.GetResponse(); Console.WriteLine(((HttpWebResponse)response).StatusDescription); } static void SetBasicAuthHeader(WebRequest request, String userName, String userPassword) { string authInfo = userName + ":" + userPassword; authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); request.Headers["Authorization"] = "Basic " + authInfo; } }
然后我得到
Unhandled Exception: System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse().
我做了什么错?
我也尝试发布使用招相同的消息,我得到
{"error":"invalid_request"}
这对我不起作用。 API改变了,还是我错过了一些东西?使用上面的代码,我得到: \t \t远程服务器返回错误:(400)错误的请求。 – Foozinator