anchor.diff:              with
                   | OAuthException e -> return! f_failure {FailureData.Code = 1; Message = e; Info = e} ctx
                   | e -> return! f_failure {FailureData.Code = 1; Message = e.Message; Info = e} ctx
  -        }+        }
  
positive.code: 
          (fun ctx ->
              let provider_key,config = configs |> get_config ctx
          
              let extractToken =
                  match config.token_response_type with
                  | JsonEncode -> util.parseJsObj >> Map.tryFind "access_token" >> Option.bind (unbox<string> >> Some)
  
negative.code:                     let user_id = user_info.["id"] |> System.Convert.ToString
                      let user_name = user_info.["name"] |> System.Convert.ToString
  
                      return! f_success {ProviderName = provider_key; Id = user_id; Name = user_name; AccessToken = Option.get access_token; ProviderData = user_info} ctx
                  }
          )
  
  