2016-07-28 7 views
6

से सेल्सफोर्स प्रमाणीकरण में त्रुटि मैं सेल्सफोर्स में नया हूं और मूलभूत बातों के साथ तेजी से बढ़ने के माध्यम से काम कर रहा हूं क्योंकि हम अगले हफ्ते एक बड़ी एकीकरण परियोजना शुरू करेंगे। हमारे एकीकरण के कम से कम हिस्से के लिए हमें SalesForce Rest API तक पहुंचने की आवश्यकता होगी। इसके लिए मेरी टीम पर एक और सज्जन और मैंने पोस्टमैन का उपयोग करके सफलतापूर्वक ओएथ 2 प्रमाणीकरण के आसपास कुछ बुनियादी प्रोटोटाइप किया है। हमारी समस्या यह है कि पोस्टमैन में सब ठीक काम करने लगता है, जैसे ही हम कॉल करने के लिए सी # का उपयोग करने के लिए स्विच करते हैं, हम अपने ऑथ टोकन के बजाय त्रुटि प्राप्त करना शुरू करते हैं।सी # क्लाइंट (0)

using System; 
using System.Collections.Generic; 
using System.Net.Http; 
using System.Web; 

namespace SFTokenTest 
{ 
    internal class Program 
    { 
     private const string LoginUrl = "https://test.salesforce.com/services/oauth2/token"; 

     private static void Main(string[] args) 
     { 
      FormUrlEncodedContent content = new FormUrlEncodedContent(new [] 
      { 
      new KeyValuePair<string, string>("grant_type",HttpUtility.UrlEncode("password")), 
      new KeyValuePair<string, string>("password",HttpUtility.UrlEncode("PASSWORD")), 
      new KeyValuePair<string, string>("username", HttpUtility.UrlEncode("USERNAME")), 
      new KeyValuePair<string, string>("client_id",HttpUtility.UrlEncode("CLIENTID")), 
      new KeyValuePair<string, string>("client_secret",HttpUtility.UrlEncode("CLIENTSECRET")) 
      }); 
      HttpResponseMessage response; 
      using (HttpClient client = new HttpClient()) 
      { 
       response = client.PostAsync(LoginUrl, content).Result; 
      } 

      Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
      Console.WriteLine(response.StatusCode); 

      Console.ReadLine(); 
     } 
    } 
} 

नोट:: यह है प्रतिक्रिया HTTP स्थिति 400 गलत अनुरोध और प्रतिक्रिया की सामग्री

{"error":"invalid_grant","error_description":"authentication failure"}. 

यहाँ सी # कोड के कुछ का एक नमूना हम कोशिश की है है है है हमने कई कार्यान्वयनों में से एक को HttpWebRequest और WebClient का उपयोग करने का प्रयास किया है, सभी एक ही परिणाम के साथ।

हमारे अपने कोड के अतिरिक्त हमने गिटहब रिपोजिटरी डेवलपरफोर्स/फोर्स डॉट कॉम-टूलकिट-फॉर-नेट से कोड खींचने का प्रयास किया है, जिसने एक ही मुद्दा प्रस्तुत किया है।

अब तक हम किसी भी भाग्य के साथ समस्या निवारण में दो दिन नहीं हैं और हमने अपने सेल्सफोर्स सलाहकार को क्यों फेंक दिया है कि यह क्यों काम नहीं कर रहा है। हमने आज दोपहर सुरक्षा टोकन को रीसेट करने का प्रयास नहीं किया। मैं लेख के एक नंबर के माध्यम से (StackOverflow पर सहित) ऑनलाइन देखा है जो निम्न समस्याओं को बिंदु के सबसे:

  • बुरा साख - हम एक ही क्रेडेंशियल्स का उपयोग कर रहे हैं सफलतापूर्वक डाकिया में है कि हम अपने सी # में उपयोग करने के लिए प्रयास कर रहे हैं एप्लिकेशन (ओं) और हमने सेल्सफोर्स यूआई से उन्हें दोबारा चिपकाकर चिपकाया है और हमने अदृश्य पात्रों को चुनने के मामले में उन्हें अपने कोड में हाथ की कोशिश करने की कोशिश की है। (क्रेडेंशियल द्वारा मैं उपयोगकर्ता नाम, पासवर्ड, क्लाइंट_आईडी, और क्लाइंट रहस्य शामिल कर रहा हूं।)
  • खराब या अनुपलब्ध सामग्री-प्रकार शीर्षलेख - हम निश्चित रूप से "एप्लिकेशन/एक्स-www-form-urlencoded" भेज रहे हैं जिसे मैंने प्रत्येक एप्लिकेशन में चेक किया है कई बार (और यह सत्यापित करने के लिए स्नीफ किया गया है कि इसे वास्तव में भेजा जा रहा था)।
  • अनएन्कोडेड पैरामीटर्स - मैंने इसे कई स्टैक ओवरफ्लो थ्रेड पर देखा है और सत्यापित किया है कि हम उन पैरामीटर को एन्कोड कर रहे हैं जिन्हें हम भेज रहे हैं मैं अनुरोध निकाय हूं।

ऐसा लगता है कि पोस्टमैन ऐसा कर रहा है कि हम अपने अनुरोधों में नहीं हैं, लेकिन मुझे यह पता लगाना प्रतीत नहीं होता है कि यह क्या है। हमने पोस्टमैन और हमारे ग्राहकों में से एक के अनुरोधों को भी कब्जा कर लिया और उन्हें अलग कर दिया और वे समान रूप से वापस आए।

किसी भी मदद की सराहना की जाएगी।

उत्तर

17

यदि आपने अभी तक इसे हल नहीं किया है, तो मुझे लगता है कि यह आपकी समस्या हो सकती है। तो इस के अनुसार: https://help.salesforce.com/apex/HTViewSolution?id=000221207 जून 2016 से शुरू हो रहा है Salesforce चरणबद्ध दृष्टिकोण में अपने पूरे प्लेटफार्म में टीएलएस 1.0 एन्क्रिप्शन को अक्षम कर देगा।

यदि आप .NET 4.6 से पहले किसी भी संस्करण पर हैं, तो इसका मतलब है कि आपके पास डिफ़ॉल्ट रूप से TLS 1.1/1,2 स्विच नहीं होगा। विकल्पों में से यहां एक छोटी सूची है जिसका उपयोग आप इसे सक्षम करने के लिए कर सकते हैं: https://help.salesforce.com/apex/HTViewSolution?id=000221207#Inboundintegrations

आपके जैसे कंसोल एप्लिकेशन के लिए, बस मेरी तरफ से परीक्षण किया गया और निम्नलिखित मेरे लिए (.NET 4.5 पर काम किया।2):

 string LoginUrl = "https://login.salesforce.com/services/oauth2/token"; 
     //the line below enables TLS1.1 and TLS1.2 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; 
     FormUrlEncodedContent content = new FormUrlEncodedContent(new[] 
     { 
     new KeyValuePair<string, string>("grant_type", "password"), 
     new KeyValuePair<string, string>("client_id","CLIENTID"), 
     new KeyValuePair<string, string>("client_secret","CLIENTSECRET"), 
     new KeyValuePair<string, string>("password","PASSWORD + SECURITYTOKEN"), 
     new KeyValuePair<string, string>("username", "USERNAME") 
     }); 
     HttpResponseMessage response; 
     using (HttpClient client = new HttpClient()) 
     { 
      response = client.PostAsync(LoginUrl, content).Result; 
     } 
     Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
     Console.WriteLine(response.StatusCode); 
     Console.ReadLine(); 
+0

हमने इसे भी हमारे मुद्दे के रूप में पहचाना है और मैं यह सत्यापित कर सकता हूं कि हमने एक ही बदलाव किया है और हमारा कोड अब भी काम कर रहा है। – ChaosMonkey

+0

आपको बहुत बहुत धन्यवाद - मैं कल से ही एक ही मुद्दे के साथ संघर्ष कर रहा हूं। एकल सेवापॉइंट प्रबंधक लाइन जोड़ा गया और यह काम किया। मैंने सोचा कि मैं पागल हो रहा था! – cyberspy

+0

आपकी मदद के लिए बहुत बहुत धन्यवाद। यह मेरे लिए काम कर रहा है – gaurav

संबंधित मुद्दे