2013-08-20 2 views
3

Я кодирую инструмент социального управления. Мне нужен бесконечный токен доступа для Facebook.Access Token Infinite Renewal

Прежде всего, скажите мне, правильно ли я это понимаю; Токен доступа Причина, по которой мы получаем, заключается в том, чтобы иметь доступ к учетным записям пользователей для приложения, и этот токен доступа имеет 60 дней до истечения срока действия. но даже после того, как истек срок действия разрешений учетных записей пользователей только для приложений, у нас нет разрешения на это?

Могу ли я обновить токен доступа после истек? Я попробовал что-то вроде этого;

void GetToken() 
     { 
      try 
      { 
       WebClient webClient = new WebClient(); 

       String fb_exchange_token = null; 

       fb_exchange_token = ds.Tables[0].Rows[0]["token"].ToString(); 
       String newToken = fb_exchange_token; 
       var fb = new FacebookClient(); 
       try 
       { 
        dynamic result = fb.Get("oauth/access_token", new 
        { 
         client_id = client_id, 
         client_secret = client_secret, 
         grant_type = "fb_exchange_token", 
         fb_exchange_token = fb_exchange_token 
        }); 
       } 
       catch (Exception ex) 
       { 
        if (ex.Message.Contains("expired")) 
        { 
         dynamic result = fb.Get("oauth/access_token", new 
         { 
          client_id = client_id, 
          client_secret = client_secret, 
          grant_type = "client_credentials", 
          fb_exchange_token = fb_exchange_token 
         }); 

         newToken = (string)result.access_token; 
         if (newToken != fb_exchange_token) 
          SqlHelper.ExecuteNonQuery(ConnectionString, "SocialTokenUpdate", ds.Tables[0].Rows[0]["SocialId"].ToString(), newToken); 
        } 

        DataProvider.ExceptionLogAdd("xx.aspx", "GetToken", ex.Message); 
       } 



       Session["Token"] = newToken; 
       Session["FBPageId"] = ds.Tables[0].Rows[0]["SocailFBId"].ToString(); 
      } 
      catch (Exception ex) 
      { 
       DataProvider.ExceptionLogAdd("xx.aspx", "GetToken", ex.Message); 
      } 
     } 

ответ

0

Если вы хотите автоматически создать новый accessToken, это означает, что приложение откроет первый экран, на котором пользователь предоставляет доступ к Приложению. Затем он будет генерировать новый accessToken. Если accessToken is Expired получает его в OAuthException и перенаправляет на передний экран.