2016-04-29 71 views
0

我正在做一個項目,在我的應用程序中使用visual studio 2012加載webview。在加載web視圖之前,我發送一個curl請求來獲取一些access_token,我需要在cookie中爲該特定webview設置,以便用戶自動登錄該webview。所以在curl的回調中,當我收到令牌時,我打電話setCookie on cef全局cookie管理器但它總是返回我falseCef Cookie管理器SetCookie總是返回false

CefRefPtr<CefCookieManager> cookieManager=CefCookieManager::GetGlobalManager(); 
    CefString cefURL ; 
    cefURL.FromString(url.GetUTF8String()); 
    bool retVal = cookieManager->SetCookie(cefURL,cookie); 

我做錯了什麼,是因爲我正在捲曲回調這是一個單獨的線程。

回答

0
CefRefPtr<CefCookieManager> manager = 
     CefCookieManager::GetGlobalManager(nullptr); 
DCHECK(manager.get()); 
CefCookie cookie; 
     CefString(&cookie.name).FromString(key); 
     CefString(&cookie.value).FromString(value); 
     CefString(&cookie.domain).FromString(domain); 
     CefString(&cookie.path).FromString("/"); 
     cookie.has_expires = true; 
     cookie.expires.year = 2099; 
     cookie.expires.month = 1; 
     cookie.expires.day_of_week = 1; 
     cookie.expires.day_of_month = 1; 
     std::string url = "https://" + domain;//eg:".stackoverflow.com" 
     //manager->SetCookie(url, cookie, nullptr); 
     CefPostTask(TID_IO, NewCefRunnableMethod(manager.get() 
      , &CefCookieManager::SetCookie 
      , CefString(url.c_str()), cookie, nullptr)); 

設置通過進程間通信,使用CefPostTask功能

+0

可能是值得加入_why_的簡短說明當OP的代碼不 – tolanj

+0

歡迎堆棧溢出這個作品!儘管這段代碼可能會解決這個問題,其中包括* how *和* why *的解釋,這可以解決問題[真的有所幫助](// meta.stackexchange.com/q/114762)來提高帖子的質量。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

+0

舊版本需要在IO線程上設置cookie。具有回調作爲參數的較新版本可以在任何線程上調用。 IPC不相關 – amaitland